【发布时间】:2020-03-02 01:11:04
【问题描述】:
给定 numpy ndarray A 和一个整数数组 I,形状相同,具有最高值 imax 和一个数组 B = np.zeros(imax),我们可以做 B[I] = A。但是,如果I 有重复的条目,则最后一个分配成立。我需要在汇总重复条目时这样做,例如
For i in range(A.size):
B[I.ravel()[i]] += A.ravel()[i]
numpy 有没有好的方法来做到这一点?
例如,我想要这种行为(但 = 和 += 都不是这样工作的)
A = np.array((1,2,5,9))
I = np.array((0,1,2,0),dtype=int)
B = np.zeros(3)
B[I] += A
print(B)
>>> array([10,2,5])
我们在第一个条目中看到1+9=10。
【问题讨论】:
-
如果您提供了一个说明问题的数据示例,您的问题会变得更清晰(并且更容易正确回答)。
-
add.at提供了一个无缓冲的添加,供您在索引重复时使用 -
@Grismar 我添加了一个例子!
-
@hpaulj 这就是答案,非常感谢!如果你想让它成为一个答案,我会接受它。
标签: python arrays numpy indexing sum