我想用不改变屏蔽值的值替换(仅)数组 (x) 的未屏蔽值。这个我试过了,
x = masked_array(data =
[[1 -- 6 3]
[3 -- 2 --]],
mask =
[[False True False False]
[False True False True]],
fill_value = 999999)
x[0,:] = 1.
但我得到的结果不是我所期望的,因为轴 0 中的所有值都更改为 1,正如我在此处显示的那样,
x = masked_array(data =
[[1 1 1 1]
[3 -- 2 --]],
mask =
[[False False False False]
[False True False True]],
fill_value = 999999)
我希望得到的结果是这样的:
x = masked_array(data =
[[1 -- 1 1]
[3 -- 2 --]],
mask =
[[False False False False]
[False True False True]],
fill_value = 999999)
对此有何见解? 请注意,这只是我实际函数的一个示例,它使用了非常大的掩码 netCDF 文件。
提前致谢。
最佳答案
您可以切入 x
的 mask
并从 x
中的给定行中选择特定元素:
x[0,~x.mask[0,:]]=1
之前:
In [40]: x
Out[40]:
masked_array(data =
[[1 -- 6 3]
[3 -- 2 --]],
mask =
[[False True False False]
[False True False True]],
fill_value = 999999)
之后:
In [42]: x
Out[42]:
masked_array(data =
[[1 -- 1 1]
[3 -- 2 --]],
mask =
[[False True False False]
[False True False True]],
fill_value = 999999)
关于python - 仅替换屏蔽的 numpy 数组中的未屏蔽值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33203352/