计算python中多维数组中数组的出现次数

use*_*562 7 python arrays numpy multidimensional-array

我有以下类型的数组:

a = array([[1,1,1],
           [1,1,1],
           [1,1,1],
           [2,2,2],
           [2,2,2],
           [2,2,2],
           [3,3,0],
           [3,3,0],
           [3,3,0]])
Run Code Online (Sandbox Code Playgroud)

我想计算每种类型数组的出现次数,例如

[1,1,1]:3, [2,2,2]:3, and [3,3,0]: 3 
Run Code Online (Sandbox Code Playgroud)

我怎么能在python中实现这一点?是否可以不使用for循环并计入字典?它必须快速,并且应该花费不到0.1秒左右.我查看了Counter,numpy bincount等等.但是,这些是针对个别元素而不是数组.

谢谢.

Pad*_*ham 2

如果您不介意映射到元组只是为了获取计数,您可以使用 Counter dict,它在 28.5 \xc2\xb5s我的机器上使用 python3 运行,远低于您的阈值:

\n\n
In [5]: timeit Counter(map(tuple, a))\n10000 loops, best of 3: 28.5 \xc2\xb5s per loop\n\nIn [6]: c = Counter(map(tuple, a))\n\nIn [7]: c\nOut[7]: Counter({(2, 2, 2): 3, (1, 1, 1): 3, (3, 3, 0): 3})\n
Run Code Online (Sandbox Code Playgroud)\n