仅在掩码的numpy数组中替换未屏蔽的值

时间:2015-10-18 21:18:40

标签: 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文件。

提前致谢。

1 个答案:

答案 0 :(得分:4)

您可以切入mask的{​​{1}}并从x中的给定行中选择特定元素:

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)