在我的代码中,有一个地方我试图修改掩蔽数组的值,但是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的形状,或者值为非负数的位置,或者我需要修改哪个)。
我正在使用numpy 1.11.0,在Ubuntu 16.04.2上的python 2.7.12进行工作。
谢谢!
x[0, 1:3]
;x[0, mask]
。但也要记住,使用布尔掩码进行索引会产生副本。 - hpaulj