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等等.但是,这些是针对个别元素而不是数组.
谢谢.
如果您不介意映射到元组只是为了获取计数,您可以使用 Counter dict,它在 28.5 \xc2\xb5s我的机器上使用 python3 运行,远低于您的阈值:
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})\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1849 次 |
| 最近记录: |