我有一个小数组,例如
a = array([[0, 0, 1], [1, 1, 1], [1, 1, 1], [1, 0, 1]])
我想计算数组中每个唯一元素的出现次数。例如,对于上面的数组a,我想知道[0,0,1]出现了1次,[1,1,1]出现了2次,[1,0,1]出现了1次。
我想到的一个办法是:
from collections import defaultdict
d = defaultdict(int)
for elt in a:
d[elt] += 1
有更好/更有效的方法吗?
谢谢。
Tags:
如果坚持使用Python 2.7(或3.1)不是问题,而且这两个Python版本中的任何一个对您都是可用的,那么如果坚持使用可散列元素(如元组),那么新的collections.Counter可能对您有帮助:
不过,我还没有对这两种方法进行任何性能测试。
可以按行按字典顺序对数组排序,并查找行更改的点:
最后一个数组表示前三行不同,第三行重复两次。
对于1和0数组,可以对值进行编码:
也可以使用字典。哪种方法最快取决于实际使用的数组的类型。
对于Python2.6<
相关问题 更多 >
编程相关推荐