Numpy 2D面具 - 切片另一个

时间:2014-11-26 13:25:00

标签: arrays python-2.7 numpy

我有一个2D数组,我想用这样的掩码切片:

import numpy as np

a = np.random.randint(0, 10, 100).reshape(10, 10)
tested = np.arange(100).reshape(10, 10)
c = np.ma.masked_where(((a>2) & (a<7)),a)

In [29]: c
Out[29]: 
masked_array(data =
 [[-- -- 9 -- 0 -- 1 -- 0 --]
 [1 -- 8 0 -- -- 7 -- -- --]
 [-- -- -- 2 -- -- -- 9 1 --]
 [-- -- -- 9 9 0 0 8 1 0]
 [8 -- 2 9 1 -- -- 9 8 2]
 [-- -- 1 -- 8 0 -- -- 0 2]
 [9 -- 8 -- -- 1 2 -- 1 1]
 [-- -- -- 1 2 0 8 -- 9 9]
 [1 -- -- -- -- 0 -- 9 7 --]
 [1 0 -- -- 2 1 0 0 7 1]],
             mask =
 [[ True  True False  True False  True False  True False  True]
 [False  True False False  True  True False  True  True  True]
 [ True  True  True False  True  True  True False False  True]
 [ True  True  True False False False False False False False]
 [False  True False False False  True  True False False False]
 [ True  True False  True False False  True  True False False]
 [False  True False  True  True False False  True False False]
 [ True  True  True False False False False  True False False]
 [False  True  True  True  True False  True False False  True]
 [False False  True  True False False False False False False]],
       fill_value = 999999)

如何根据创建的蒙版(即“c”masked_array)过滤“已测试”,并将输出作为2D数组(保持“测试”形状,并用np.nan替换缺席值,或者作为ma) ?

1 个答案:

答案 0 :(得分:1)

您可以使用where

np.where(c.mask,tested,np.nan)