我有这个人。 numpy蒙面数组:
masked_array(data =
[[-- -- -- ..., -- -- --]
[-- -- -- ..., -- -- --]
[-- -- -- ..., -- -- --]
...,
[-- -- -- ..., -- -- --]
[-- -- -- ..., -- -- --]
[-- -- -- ..., -- -- --]],
mask =
[[ True True True ..., True True True]
[ True True True ..., True True True]
[ True True True ..., True True True]
...,
[ True True True ..., True True True]
[ True True True ..., True True True]
[ True True True ..., True True True]],
fill_value = -9999.0)
我想用0.0替换这个蒙版数组中的所有-9999.0,但是foll。不起作用:
arr.data[arr == -9999.0] = 0.0
结果arr
仍然包含所有-9999.0。我该如何解决?
- 编辑:
这就是arr.data的样子:
array([[-9999., -9999., -9999., ..., -9999., -9999., -9999.],
[-9999., -9999., -9999., ..., -9999., -9999., -9999.],
[-9999., -9999., -9999., ..., -9999., -9999., -9999.],
...,
[-9999., -9999., -9999., ..., -9999., -9999., -9999.],
[-9999., -9999., -9999., ..., -9999., -9999., -9999.],
[-9999., -9999., -9999., ..., -9999., -9999., -9999.]], dtype=float32)
答案 0 :(得分:2)
掩码位于arr.mask
值为True的位置。
所有这些值-9999.
值都被屏蔽。
如果您希望它也适用于蒙版值,而不是使用它:
arr.data[arr == -9999.0] = 0.0
应该是这样的:
arr.data[arr.data == -9999.0] = 0.0
注意:请注意像这样的浮点相等比较。通常,您希望在容差范围内进行比较,而不是直接相等。请参阅np.isclose
以了解有关该问题的更多详细信息。