【发布时间】:2014-10-01 06:29:45
【问题描述】:
我正在尝试将名为“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]
感谢您的 cmets 和经验。
【问题讨论】:
标签: python numpy indexing multidimensional-array