Python 如何从频率和索引中获取numpy数组

Python 如何从频率和索引中获取numpy数组,python,arrays,numpy,Python,Arrays,Numpy,我有一个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',

我有一个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)
。我需要有一个形状
(2,10)
的numpy数组,但带有频率值。因此,上述结果将是:

[[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)

虽然通过这种方式,计数是唯一值的频率,但它不会给出与原始数组相同的形状。

您需要使用
return\u inverse
而不是
return\u index

_, i, c = np.unique(nparr, return_inverse=True, return_counts=True)
是一种表示丢弃的返回值的约定。您不需要唯一的值来知道计数的去向

您可以通过简单的索引操作获得按原始数组顺序排列的计数。当然,分解为原始形状是必要的:

c[i].reshape(nparr.shape)

您需要使用
return\u inverse
而不是
return\u index

_, i, c = np.unique(nparr, return_inverse=True, return_counts=True)
是一种表示丢弃的返回值的约定。您不需要唯一的值来知道计数的去向

您可以通过简单的索引操作获得按原始数组顺序排列的计数。当然,分解为原始形状是必要的:

c[i].reshape(nparr.shape)


您缺少了一个引号,因此代码标记非常容易查找和修改fix@MadPhysicist我没听懂你说的话,那是什么
u'realiti
缺少一个quoteOops,感谢您提到@yatu。更新,不用担心。我提出了一个简单得多的答案。您之所以关闭,是因为您需要的是倒排索引,而不是原始索引。您缺少一个引号,因此的代码标记非常容易查找和修改fix@MadPhysicist我没听懂你说的话,那是什么
u'realiti
缺少一个quoteOops,感谢您提到@yatu。更新,不用担心。我提出了一个简单得多的答案。你离开是因为你想要倒排索引,而不是原始索引。没有想到在这里使用
return\u inverse
,当然成功了simpler@yatu. 诀窍是
返回\u逆
。我想那个论点是为这类问题加上去的,我的意思是肯定的。我知道这一点,只是出于某种原因,
searchsorted
浮现在我的脑海中:)它更简单。没有想到在这里使用
return\u inverse
,当然可以simpler@yatu. 诀窍是
返回\u逆
。我想那个论点是为这类问题加上去的,我的意思是肯定的。我知道,只是出于某种原因,
searchsorted
浮现在我的脑海中:)因为它更简单。