python - 如何计算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)
解决方案
您可以在 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]
推荐阅读
- c# - C# 泛型方法:有什么问题,如果可能的话?
- keycloak - 带有chrome扩展的Keycloak登录
- android - 如何在适配器的 Kotlin 中提供长点击监听器
- javascript - Textarea 不会每次都从右上角开始
- c - 何时以及何时不在 C 中进行类型转换有冲突?
- javascript - 使用 JavaScript 从 HTML 表单获取用户输入
- python - 在 Bokeh 服务器上创建一个绘图,然后下载客户端
- python - jwt.exceptions.DecodeError:无效的加密填充
- components - 如何在 blazor 中订阅组件加载事件?
- python - 是否可以确定我们是否处于循环中间?