首页 > 解决方案 > 如何计算numpy数组中每个项目的出现次数

问题描述

我有以下<type 'numpy.ndarray'>

array_element = [('T10', 'R1T0') ('T20', 'R2T0') ('T31', 'R3T1') ('T21', 'R2T1')
 ('T10', 'R1T0') ('T20', 'R2T0')]

我想计算array_element以这种方式发生的元素的数量:

('T10', 'R1T0')重复两次,('T20', 'R2T0')所以最终输出:

array_element_count = [('T10', 'R1T0', 2) ('T20', 'R2T0', 2) ('T31', 'R3T1', 1) 
('T21', 'R2T1', 1)]

Forarray_element是通过使用创建的numpy

dt = np.dtype([('x', np.str_, 16), ('y', np.str_, 16)])
array_element = np.zeros((len(strs),), dtype=dt)

我在计算将存储在此数组中的每个项目的出现次数时遇到问题:

dt = np.dtype([('x', np.str_, 16), ('y', np.str_, 16), , ('z', np.int32)])
array_element_count = np.zeros((len(strs),), dtype=dt)

标签: pythonnumpy

解决方案


您可以在 numpy 中使用 'unique' 属性。

array_element = np.array([('T10', 'R1T0'), ('T20', 'R2T0'), ('T31', 'R3T1'), ('T21', 'R2T1'),
 ('T10', 'R1T0'), ('T20', 'R2T0')])
uniq_array,count_array = np.unique(array_element,axis=0, return_counts=True)

然后你就能得到答案。

print (uniq_array)
print (count_array)

[['T10' 'R1T0'] ['T20' 'R2T0'] ['T21' 'R2T1'] ['T31' 'R3T1']]

[2 2 1 1]


推荐阅读