假设 numpy 中有三个数组:
a = np.zeros(5)
b = np.array([3,3,3,0,0])
c = np.array([1,5,10,50,100])
b 现在可以用作 a 和 c 的索引。例如:
In [142]: c[b]
Out[142]: array([50, 50, 50, 1, 1])
有没有办法通过这种切片将连接到重复索引的值相加?与
a[b] = c
仅存储最后的值:
array([ 100., 0., 0., 10., 0.])
我想要这样的东西:
a[b] += c
这会给出
array([ 150., 0., 0., 16., 0.])
我正在将非常大的向量映射到二维矩阵上,并且真的希望避免循环......
最佳答案
NumPy 数组的 +=
运算符根本无法按照您希望的方式工作,而且我不知道如何让它以这种方式工作。作为解决方法,我建议使用 numpy.bincount() :
>>> numpy.bincount(b, c)
array([ 150., 0., 0., 16.])
只需根据需要添加零即可。
关于python - 映射具有重复索引的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9282149/