给定一个整数数组,我想获得一个相同大小的数组,其中每个值都是原始数组中相应元素出现的次数。
例如给定以下数组:
a = np.array([1, 1, 4, 10, 5, 3, 5, 5, 8, 9])
Run Code Online (Sandbox Code Playgroud)
这应该是结果:
array([2, 2, 1, 1, 3, 1, 3, 3, 1, 1])
Run Code Online (Sandbox Code Playgroud)
尽管通过collections.Counter或内置实现此目的很简单list.count(),但我正在寻找一种更高效的方法来处理大型列表。
您可以使用np.unique并使用参数return_inverse和return_counts。使用return_inverse索引return_counts来获得所需的结果。
return_inverse bool,可选 如果为 True,还返回可用于重建 ar 的唯一数组的索引(对于指定轴,如果提供)。
return_counts bool, 可选 如果为 True,还返回每个唯一项出现在 ar 中的次数。
_, idx, c = np.unique(a, return_inverse=True, return_counts=True)
c[idx]
# array([2, 2, 1, 1, 3, 1, 3, 3, 1, 1])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
555 次 |
| 最近记录: |