如何使用Numpy屏蔽数组的一部分?

时间:2011-03-05 19:58:39

标签: numpy

我想要做的是“掩盖”j元素数组的一个子集,范围从0k。例如。对于这个数组:

[0.2, 0.1, 0.3, 0.4, 0.5]

掩盖前两个元素

[NaN, NaN, 0.3, 0.4, 0.5] 

masked_array是否支持此操作?

2 个答案:

答案 0 :(得分:5)

In [51]: arr=np.ma.array([0.2, 0.1, 0.3, 0.4, 0.5],mask=[True,True,False,False,False])

In [52]: print(arr)
[-- -- 0.3 0.4 0.5]

或者,如果你已经有一个numpy数组,你可以使用np.ma.masked_less_equal(参见链接以了解掩盖特定元素的各种其他操作):

In [53]: arr=np.array([0.2, 0.1, 0.3, 0.4, 0.5])

In [56]: np.ma.masked_less_equal(arr,0.2)
Out[57]: 
masked_array(data = [-- -- 0.3 0.4 0.5],
             mask = [ True  True False False False],
       fill_value = 1e+20)

或者,如果你想掩盖前两个元素:

In [67]: arr=np.array([0.2, 0.1, 0.3, 0.4, 0.5])

In [68]: arr=np.ma.array(arr,mask=False)

In [69]: arr.mask[:2]=True

In [70]: arr
Out[70]: 
masked_array(data = [-- -- 0.3 0.4 0.5],
             mask = [ True  True False False False],
       fill_value = 1e+20)

答案 1 :(得分:1)

我发现了这个:

  
    
      

ma.array([1,2,3,4],mask = [1,1,0,0])       masked_array(data = [ - - 3 4],                    mask = [True True False False],              fill_value = 999999)