2014-11-26 3 views
0

У меня есть 2D массив, и я хочу, чтобы нарезать его использовать маску так: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) 

Как я мог фильтровать «испытания» на основе маски, созданной (т.е. «с «masked_array») и получить результат как 2D-массив (поддерживая «проверенную» форму и заменяя отсутствующие значения np.nan или как ma)?

ответ

Смежные вопросы