我想将vals
中的值求和为索引列表idx
中指定的较小数组a
的元素。你知道吗
import numpy as np
a = np.zeros((1,3))
vals = np.array([1,2,3,4])
idx = np.array([0,1,2,2])
a[0,idx] += vals
这会产生结果[[ 1. 2. 4.]]
,但我想要结果[[ 1. 2. 7.]]
,因为它应该将来自vals
的3和来自vals
的4添加到a
的第二个元素中。你知道吗
我可以通过以下方式实现我的目标:
import numpy as np
a = np.zeros((1,3))
vals = np.array([1,2,3,4])
idx = np.array([0,1,2,2])
for i in np.unique(idx):
fidx = (idx==i).astype(int)
psum = (vals * fidx).sum()
a[0,i] = psum
print(a)
有没有一种不用for循环就可以用numpy实现的方法?你知道吗
只要形状对齐,
np.add.at
就有可能,也就是说,a
在这里需要是1D。你知道吗相关问题 更多 >
编程相关推荐