我拿到了那本书。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)我想将这个蒙面数组中的所有-9999.0替换为0.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)发布于 2017-01-19 23:11:44
掩码位于arr.mask有值True的位置。
所有这些值-9999.值都被屏蔽。
如果您希望它也应用于蒙面值,而不是使用它:
arr.data[arr == -9999.0] = 0.0应该是这样:
arr.data[arr.data == -9999.0] = 0.0注意:要小心浮点相等的比较,如下所示。通常,你希望在宽容的范围内进行比较,而不是直接的平等。有关这方面的更多细节,请参见np.isclose。
https://stackoverflow.com/questions/41753318
复制相似问题