替换python numpy掩码数组中的值

替换python numpy掩码数组中的值,python,numpy,Python,Numpy,我有福勒。numpy屏蔽阵列: masked_array(data = [[-- -- -- ..., -- -- --] [-- -- -- ..., -- -- --] [-- -- -- ..., -- -- --] ..., [-- -- -- ..., -- -- --] [-- -- -- ..., -- -- --] [-- -- -- ..., -- -- --]], mask = [[ True True True ..., T

我有福勒。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)

arr.mask
的值为True时,掩码打开

所有这些值
-9999.
值都被屏蔽

如果希望它也应用于遮罩值,请不要使用此选项:

arr.data[arr == -9999.0] = 0.0
应该是这样的:

arr.data[arr.data == -9999.0] = 0.0

注意:像这样进行浮点相等比较时要小心。通常,您希望在公差范围内进行比较,而不是直接相等。请参阅以阅读更多有关此的详细信息

arr.mask
的值为True时,掩码打开

所有这些值
-9999.
值都被屏蔽

如果希望它也应用于遮罩值,请不要使用此选项:

arr.data[arr == -9999.0] = 0.0
应该是这样的:

arr.data[arr.data == -9999.0] = 0.0

注意:像这样进行浮点相等比较时要小心。通常,您希望在公差范围内进行比较,而不是直接相等。请参阅以阅读更多有关此的详细信息

你确定它里面有
-9999.0
,而不是其他一些浮动非常接近
-9999.0
?谢谢@wim,我绝对确定它是-9999。0@wim,已编辑的问题,以显示阵列数据的外观。是否还要更改掩码
arr.filled(0)
可能是您想要的。您确定其中包含
-9999.0
,而不是其他非常接近
-9999.0
的浮动吗?谢谢@wim,我绝对确定它是-9999。0@wim,已编辑的问题,以显示阵列数据的外观。是否还要更改掩码<代码>arr.filled(0)可能是您想要的。