我有一个二维NumPy数组
这将给出
我想要的是根据索引对(r1, r2)添加V的列,并将其存储在列索引r1中。也就是说,对于这种情况,添加列(1,3),(2,4)和(5,7),并将它们分别存储在V的列1、2和5中。
可以轻松地像这样完成:
V
:import numpy as np
np.random.seed(10)
V = np.random.randint(-10, 10, size=(6,8))
这将给出
V
:[[ -1 -6 5 -10 7 6 7 -2]
[ -1 -10 0 -2 -6 9 6 -6]
[ 5 1 1 -9 -2 -6 4 7]
[ 9 3 -5 3 9 3 2 -9]
[ -6 8 3 1 0 -1 5 8]
[ 6 -3 1 7 4 -3 1 -9]]
现在,我有两个列表r1
和r2
,包含如下的列索引:
r1 = [1, 2, 5]
r2 = [3, 4, 7]
我想要的是根据索引对(r1, r2)添加V的列,并将其存储在列索引r1中。也就是说,对于这种情况,添加列(1,3),(2,4)和(5,7),并将它们分别存储在V的列1、2和5中。
可以轻松地像这样完成:
V[:, 1] = V[:, [1,3]].sum(axis=1)
V[:, 2] = V[:, [2,4]].sum(axis=1)
V[:, 5] = V[:, [5,7]].sum(axis=1)
这将给出V
:
[[ -1 -16 12 -10 7 4 7 -2]
[ -1 -12 -6 -2 -6 3 6 -6]
[ 5 -8 -1 -9 -2 1 4 7]
[ 9 6 4 3 9 -6 2 -9]
[ -6 9 3 1 0 7 5 8]
[ 6 4 5 7 4 -12 1 -9]]
我的关注点是,有没有一种方法可以不使用循环来实现呢?提前感谢:)