Как я могу замаскировать часть массива, используя Numpy? - PullRequest
4 голосов
/ 05 марта 2011

Я хочу «замаскировать» подмножество массива j элементов в диапазоне от 0 до k. Например. Для этого массива:

[0.2, 0.1, 0.3, 0.4, 0.5]

Маскировка первых 2 элементов становится

[NaN, NaN, 0.3, 0.4, 0.5] 

Поддерживает ли masked_array эту операцию?

Ответы [ 2 ]

5 голосов
/ 05 марта 2011
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]

Или, если у вас уже есть пустой массив, вы можете использовать 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 голос
/ 05 марта 2011

Я нашел это:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...