使用1维numpy MaskedArray,我可以指定一个取消屏蔽数组的元素:
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)
如何指定单个值来取消屏蔽它?
答案 0 :(得分:2)
x[0, 0] = 9
看起来当你执行x[0][0] = 9
时,NumPy将x[0]
临时掩码从x
的掩码中解耦,因此赋值只会取消屏蔽{{ 1}}临时的。相关代码位于numpy/ma/core.py
:
x[0]
我不知道为什么会这样做。