假设我有一个形状m x n
的 2D 数组,table
。
假设我有一个一维数组,形状col_indices
m
,以及值方面的范围[0,n)
。
最后,假设我有一个值数组,vals
形状u
,按i
索引。
在伪代码中,我想写:
table[:,col_ind[:]] += vals[i]
并且,手动写出:
t = [ [ 0,0,0]
[ 0,0,0]
[ 0,0,0] ]
c = [ 0, 1, 2 ]
v = [ 1, 10, 1000 ]
i = 1
# then f(t,c,v,i) where f is the broadcast function
f(t,c,v,i) outputs:
t = [ [ 10, 0, 0 ]
[ 0, 10, 0 ]
[ 0, 0, 10 ] ]
通过将行片替换为整数数组来使用高级索引:
t[np.arange(c.size), c] = v[i]
t
#array([[10, 0, 0],
# [ 0, 10, 0],
# [ 0, 0, 10]])