在我的代码中,有时我尝试修改掩码数组的值,但是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
Run Code Online (Sandbox Code Playgroud)
输出是:
5.0
Run Code Online (Sandbox Code Playgroud)
什么时候应该是10。
任何帮助将不胜感激,理想情况下,这需要可扩展(这意味着我不一定知道x的形状,或者值非负,或者我需要修改哪个)。
我正在Ubuntu 16.04.2上的python 2.7.12上使用numpy 1.11.0
谢谢 !