我将尝试替换名为"S"的2D numpy数组的一部分,该部分是i和j的函数。给定S如下:
>>> S
Out[1]:
array([[ 1., 0., 0.],
[ 0., 3., 0.],
[ 0., 0., 9.]]
对于i=0和j=1,可以使用以下语法访问行i和j以及列i和j的元素:
>>> S[:, [i, j]][[i, j], :]
Out[2]:
array([[ 1., 0.],
[ 0., 3.]])
现在,当我尝试用另一个相同维度的数组(tmp_arr)替换数组S的相同元素时,Python不会报错,但也不会执行任何操作,这意味着S的元素保持不变,也没有显示错误消息。
>>> tmp_arr
Out[3]:
array([[ 555., 0.],
[ 0., 555.]])
>>> S[:, [i, j]][[i, j], :] = tmp_arr
而我得到的是相同的矩阵:
>>> S
Out[4]:
array([[ 1., 0., 0.],
[ 0., 3., 0.],
[ 0., 0., 9.]])
显然,以下方法可以实现,但我正在寻找一种优雅的解决方案:
S[i, i] = tmp_arr[0, 0]
S[i, j] = tmp_arr[0, 1]
S[j, i] = tmp_arr[1, 0]
S[j, j] = tmp_arr[1, 1]
我感谢您的评论和经验。