使用重复索引递增Numpy多维数组

4 投票
2 回答
1517 浏览
提问于 2025-04-17 02:22

我对一个多维数组的情况很感兴趣,具体来说是关于如何用重复的索引来增加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 个回答

0

我不知道有没有更简单的方法可以直接用数组索引,不过这个方法是可以用的:

for x,y,z in zip(i,j,k):
    a[x,y,z] +=1
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  

撰写回答