Python 在2D numpy MaskedArray中通过赋值取消元素的遮罩
使用一维numpy MASKEDARAY,我可以指定一个元素,该元素将取消阵列的掩码: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 [
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]正确地建立索引。