Python 在2D numpy MaskedArray中通过赋值取消元素的遮罩

Python 在2D numpy MaskedArray中通过赋值取消元素的遮罩,python,numpy,Python,Numpy,使用一维numpy MASKEDARAY,我可以指定一个元素,该元素将取消阵列的掩码: In [183]: x = np.ma.MaskedArray(data=np.zeros((2),dtype=float),mask=True) In [184]: x[0] = 9 In [185]: x Out[185]: masked_array(data = [9.0 --], mask = [False True], fill_value = 1e+20) In [

使用一维numpy MASKEDARAY,我可以指定一个元素,该元素将取消阵列的掩码:

In [183]: x = np.ma.MaskedArray(data=np.zeros((2),dtype=float),mask=True)

In [184]: x[0] = 9

In [185]: x
Out[185]:
masked_array(data = [9.0 --],
         mask = [False  True],
   fill_value = 1e+20)
In [186]: x = np.ma.MaskedArray(data=np.zeros((2,2),dtype=float),mask=True)

In [187]: x[0][0] = 9

In [188]: x
Out[188]:
masked_array(data =
 [[-- --]
 [-- --]],
             mask =
 [[ True  True]
 [ True  True]],
       fill_value = 1e+20)
对于二维数组,指定给单个值不会取消对数组的掩码:

In [183]: x = np.ma.MaskedArray(data=np.zeros((2),dtype=float),mask=True)

In [184]: x[0] = 9

In [185]: x
Out[185]:
masked_array(data = [9.0 --],
         mask = [False  True],
   fill_value = 1e+20)
In [186]: x = np.ma.MaskedArray(data=np.zeros((2,2),dtype=float),mask=True)

In [187]: x[0][0] = 9

In [188]: x
Out[188]:
masked_array(data =
 [[-- --]
 [-- --]],
             mask =
 [[ True  True]
 [ True  True]],
       fill_value = 1e+20)
如果我指定给一个片段,该片段将被揭幕

In [189]: x[0] = 9

In [190]: x
Out[190]:
masked_array(data =
 [[9.0 9.0]
 [-- --]],
             mask =
 [[False False]
 [ True  True]],
       fill_value = 1e+20)
我如何分配一个值来解除它的掩码

x[0, 0] = 9
看起来,当您执行
x[0][0]=9
时,NumPy将
x[0]
临时掩码与
x
的掩码解耦,因此分配只会取消屏蔽
x[0]
临时掩码。相关代码位于:


我不知道它为什么会这样。

避免
A[0][0]
,尤其是在分配时。有时有效,有时无效。您应该使用
A[0,0]
。谢谢!你说得对,我应该用[0,0]正确地建立索引。