使用重复索引逐元素增加Numpy多维数组

4

我对增加重复索引的Numpy数组的多维情况感兴趣。

我有一个N维数组和一组N个索引数组,我想要递增它们的值。这些索引数组可能会有重复的条目。

如果没有重复,解决方案是

a = arange(24).reshape(2,3,4)
i = array([0,0,1])
j = array([0,1,1])
k = array([0,0,3])
a[i,j,k] += 1

使用重复(例如 j=array([0,0,2])),我无法让numpy增加这些复制。
2个回答

4
这个怎么样:
import numpy as np
a = np.zeros((2,3,4))
i = np.array([0,0,1])
j = np.array([0,0,1])
k = np.array([0,0,3])

ijk = np.vstack((i,j,k)).T
H,edge = np.histogramdd(ijk,bins=a.shape)
a += H  

我正在使用立方体容器和相同大小的展平立方体来处理i、j和k。有任何想法为什么它在大于27x27x27的数组上开始崩溃? - ajwood

0

我不知道是否有更简单的解决方案,可以直接使用数组索引,但这个方法是可行的:

for x,y,z in zip(i,j,k):
    a[x,y,z] +=1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接