Vectorized crosstabulation in Python for two arrays with two categories each
Algorithm
If you look at your code, and follow the if-elif part, you see that there are 4 combinations of i and j

i      j     : result
True,  True  : A
False, True  : B
True,  False : C
False, False : D


If you use the tuple (i, j) as key, you can use a dict lookup
{
    (True, True): &quot;A&quot;,
    (False, True): &quot;B&quot;,
    (True, False): &quot;C&quot;,
    (False, False): &quot;D&quot;,
}

Or simpler:
{
    (True, True): 3,
    (False, True): 1,
    (True, False): 2,
    (False, False): 0,
}

The choice of numbers is deliberate, since when you use True as 1 and False as 0, you can do
def crosstab2(label, presence):
    for i, j in zip(label, presence):
        yield i * 2 + j

c = collections.Counter(crosstab2(label, presence))
print('A:',c[3],'B:',c[1],'C:',c[2],'D:',c[0])

This is not faster than your original solution, but this is something you can vectorize
label = np.array([True, True, False, False,False, False,True, False, False, True, True, True, True, False])
presence = np.array([True, False, False, True, False, False, True, True, False, True, False, True, False, False])
c = collections.Counter(label * 2 + presence)
print('A:',c[3],'B:',c[1],'C:',c[2],'D:',c[0])

Which is significantly faster, even if you account for the few seconds of overhead for the creation of the numpy arrays
Formatting
Try to follow pep8.

spaces around operators (=, +, ...)
spaces after a ,

naming
I try to give collections of elements a plural name. In this case, I would use labels., so if you ever need to iterate over them, you can do for label in labels, which is a lot more clear than for i in label:
list
The extra call to list in  zip(list(label),list(presence)) is not necessary. zip takes any iterable, and doesn't modify it in place.