как получить массив numpy по частоте и показателям - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть массив numpy, подобный следующему:

nparr = np.asarray([[u'fals', u'nazi', u'increas', u'technolog', u'equip', u'princeton', 
                     u'realiti', u'civilian', u'credit', u'ten'],
                    [u'million', u'thousand', u'nazi', u'stick', u'visibl', u'realiti', 
                     u'west', u'singl', u'jack', u'charl']])

Мне нужно вычислить частоту каждого элемента и получить еще один массив numpy с соответствующей частотой каждого элемента. в той же позиции.

Итак, здесь мой массив имеет форму (2, 10). Мне нужно иметь массив numpy формы (2, 10), но со значениями частоты. Таким образом, результат вышеупомянутого будет:

[[1, 2, 1, 1, 1, 1, 2, 1, 1, 1]
 [1, 1, 2, 1, 1, 2, 1, 1, 1, 1]]

То, что я сделал до сих пор:

unique, indices, count = np.unique(nparr, return_index=True, return_counts=True)

Хотя, таким образом, счетчик является частотой уникальных значений, и он делает не дают мне ту же форму, что и исходный массив.

1 Ответ

2 голосов
/ 05 февраля 2020

Вам нужно использовать return_inverse вместо return_index:

_, i, c = np.unique(nparr, return_inverse=True, return_counts=True)

_ - это соглашение для обозначения отброшенных возвращаемых значений. Вам не нужны уникальные значения, чтобы знать, где находится счетчик go.

. Счетчик можно упорядочить в порядке исходного массива с помощью простой операции индексации. Разобраться в первоначальную форму необходимо, конечно:

c[i].reshape(nparr.shape)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...