【发布时间】:2019-03-23 13:00:53
【问题描述】:
我有一个 2D numpy 数组,需要通过多层索引更新选择的元素。对我来说这样做的明显方法不起作用,因为 numpy 似乎只是更新数组的副本而不是数组本身:
import numpy as np
# Create an array and indices that should be updated
arr = np.arange(9).reshape(3,3)
idx = np.array([[0,2], [1,1],[2,0]])
bool_idx = np.array([True, True, False])
# This line does not work as intended since the original array stays unchanged
arr[idx[:,0],idx[:,1]][bool_idx] = -1 * arr[idx[:,0],idx[:,1]][bool_idx]
这是结果输出:
>>> arr
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
但是,我期望这个输出:
>>> arr
array([[0, 1, -2],
[3, -4, 5],
[6, 7, 8]])
【问题讨论】: