python - 仅替换屏蔽的 numpy 数组中的未屏蔽值

标签 python arrays numpy

我想用不改变屏蔽值的值替换(仅)数组 (x) 的未屏蔽值。这个我试过了,

 x = masked_array(data =
 [[1 -- 6 3]
 [3 -- 2 --]],
 mask =
 [[False  True False False]
 [False  True False  True]],
   fill_value = 999999)

 x[0,:] = 1.

但我得到的结果不是我所期望的,因为轴 0 中的所有值都更改为 1,正如我在此处显示的那样,

x = masked_array(data =
[[1 1 1 1]
[3 -- 2 --]],
mask =
[[False False False False]
[False  True False  True]],
   fill_value = 999999)

我希望得到的结果是这样的:

 x = masked_array(data =
 [[1 -- 1 1]
 [3 -- 2 --]],        
 mask =
 [[False False False False]
 [False  True False  True]],
   fill_value = 999999)

对此有何见解? 请注意,这只是我实际函数的一个示例,它使用了非常大的掩码 netCDF 文件。

提前致谢。

最佳答案

您可以切入 xmask 并从 x 中的给定行中选择特定元素:

x[0,~x.mask[0,:]]=1

之前:

In [40]: x
Out[40]: 
masked_array(data =
 [[1 -- 6 3]
 [3 -- 2 --]],
             mask =
 [[False  True False False]
 [False  True False  True]],
       fill_value = 999999)

之后:

In [42]: x
Out[42]: 
masked_array(data =
 [[1 -- 1 1]
 [3 -- 2 --]],
             mask =
 [[False  True False False]
 [False  True False  True]],
       fill_value = 999999)

关于python - 仅替换屏蔽的 numpy 数组中的未屏蔽值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33203352/

相关文章:

python - 在python中将数组写入h5

Python数据帧: fill text in certain rows if other columns satisfied

python - 迭代 numpy 数组并保持维度

python - pandas read_table 带有正则表达式分隔符,因为负数没有中间空格

python - 如何使Open CV在已部署的Web应用程序上工作

javascript - lodash .get 替换空值

javascript - 为什么数组显示为字符串,但当我将其打印到控制台时,它却将其打印为数组? ReactJS 功能组件

python - 如何在python中将UTF大写字符转换为小写

python - 将迭代器分配给 Python 切片

Python-性能-将大型 numpy 数组作为字符串打印到选项卡文件