首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >替换python numpy掩码数组中的值

替换python numpy掩码数组中的值
EN

Stack Overflow用户
提问于 2017-01-19 23:02:17
回答 1查看 986关注 0票数 1

我拿到了那本书。numpy蒙面阵列:

代码语言:javascript
运行
复制
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。不起作用:

代码语言:javascript
运行
复制
arr.data[arr == -9999.0] = 0.0

生成的arr仍然包含所有的-9999.0。我该怎么解决呢?

-编辑:

这就是arr.data的样子:

代码语言:javascript
运行
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-19 23:11:44

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

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

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

代码语言:javascript
运行
复制
arr.data[arr == -9999.0] = 0.0

应该是这样:

代码语言:javascript
运行
复制
arr.data[arr.data == -9999.0] = 0.0

注意:要小心浮点相等的比较,如下所示。通常,你希望在宽容的范围内进行比较,而不是直接的平等。有关这方面的更多细节,请参见np.isclose

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41753318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档