替换python numpy蒙面数组中的值

时间:2017-01-19 23:02:17

标签: python numpy

我有这个人。 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)

1 个答案:

答案 0 :(得分:2)

掩码位于arr.mask值为True的位置。

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

如果您希望它也适用于蒙版值,而不是使用它:

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

应该是这样的:

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

注意:请注意像这样的浮点相等比较。通常,您希望在容差范围内进行比较,而不是直接相等。请参阅np.isclose以了解有关该问题的更多详细信息。

相关问题