如何解决Python:有没有一种方法可以逐行计算多维numpy ndarray的元素出现次数?
我有一个2D值数组,并想计算每一行中元素的出现次数。 bincount
函数仅适用于一维数组,使用python循环遍历每一行将不理想。 unique
函数有一个参数return_counts,但是,它计算整个列,而不是我要查找的每一行的逐元素基础。
为了更清楚地说明这一点:
import numpy as np
a = np.array([[1,1,3,2,2],[2,4,5,3]])
print(a)
# [[1,# [2,3]]
b,c = np.unique(a,return_counts=True,axis=1) # Count elements in axis 1
print(b)
# [[1 1 2 2 3]
# [2 3 3 5 4]]
print(c)
# [1 1 2 1 1]
unique
代替计数每一行中的元素,而是计算沿我指定的水平轴1的列; [2,3]
列被计数两次,其他列被计数一次。有什么方法可以使用本地numpy函数而不是python循环来实现我想要的行为?
解决方法
我不认为numpy
具有良好的计数器功能。我建议使用collections.Counter()
,但确实会在行上添加for循环。
from collections import Counter
counts = [Counter(a[k,:]) for k in range(a.shape[0])]
可以使用不同的方法访问Counter
对象,例如.most_common()
:
counts[0].most_common()
Out: [(2,3),(1,2),(3,1)]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。