Метки Bincount с горячим кодированием [дубликаты]

У меня есть набор меток с горячим кодированием, и я хочу посмотреть, сколько у меня есть каждой категории. Каждая метка может содержать один или несколько классов, например:

[1  0   0   0   0   0   0   1   0]

моим первым решением проблемы было использование np.argmax и np.bincount следующим образом:

newLabels = []
for i in range(len(labels)):
    newLabels.append(np.argmax(labels[i]))

newLabels= np.asarray(newLabels)

np.bincount(newLabels)
array([1221,  722,  199,  918,  599,  678, 1569,  786,  185])

но тогда происходит то, что приведенному выше примеру с горячим кодированием будет присвоено значение 0, а второе значение (которое должно быть 7) не будет учитываться.

У кого-нибудь есть решение этой проблемы?


comment
Можете ли вы поделиться MCVE? Разве это не просто сумма столбцов?   -  person yatu    schedule 06.04.2020
comment
@yatu, ты прав! Это просто суммировать каждый столбец   -  person bjornsing    schedule 06.04.2020


Ответы (2)


from collections import Counter

newLabels = Counter()
for label in labels:
    for idx, key in enumerate(label):
         newLabels[idx]+=key

На выходе должен быть словарь, где ключи — это индекс меток, а значения — количество.

person Tom Ron    schedule 06.04.2020

Решение этой проблемы:

np.sum(Labels, axis=0)
person bjornsing    schedule 06.04.2020