增加具有重复索引的Numpy多维数组

时间:2011-09-15 15:08:57

标签: python arrays indexing numpy

我对Increment Numpy array with repeated indices的多维案例很感兴趣。

我有一个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 个答案:

答案 0 :(得分:3)

这个怎么样:

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  

答案 1 :(得分:0)

我不知道是否有一个更简单的直接数组索引解决方案,但这有效:

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