在我的代码中,有时我尝试修改掩码数组的值,但 python 似乎忽略了这一点。我认为这与内存存储在数组中的方式有关,就好像我正在修改值的副本而不是值本身一样,但我对此不够精通,无法知道如何解决它。
这是我正在尝试做的简化版本:
x = np.zeros((2,5)) # create 2D array of zeroes
x[0][1:3] = 5 # replace some values along 1st dimension with 5
mask = (x[0] > 0) # create a mask to only deal with the non negative values
x[0][mask][1] = 10 # change one of the values that is non negative
print x[0][mask][1] # value isn't changed in the original array
这个的输出是:
5.0
什么时候应该是 10。
任何帮助将不胜感激,理想情况下,这需要是可扩展的(这意味着我不一定知道 x 的形状,或者值是非负的,或者我需要修改哪个)。
我在 Ubuntu 16.04.2 上的 python 2.7.12 上使用 numpy 1.11.0
谢谢 !