2013-10-15 5 views
3

열의 모든 값이 마스크 된 마스크 된 배열에서 열을 제거하고 싶습니다. 그래서 다음 예 :모든 값이 마스크 된 열 제거

>>> import numpy as np 
>>> test = np.array([[1,0,0],[0,3,0],[1,4,0]]) 
>>> test = np.ma.masked_equal(test,0) 
>>> test 
[[1 -- --] 
[-- 3 --] 
[1 4 --]], 
>>> np.somefunction(test) 
[[1 --] 
[-- 3 ] 
[1 4 ]] 

무엇을 np.somefunction한다() 지정된 출력을 얻을 수?

답변

4

당신은 멋진 인덱싱 사용할 수 있습니다

test[:, ~np.all(test.mask, axis=0)] 
#masked_array(data = 
# [[1 --] 
# [-- 3] 
# [1 4]], 
#    mask = 
# [[False True] 
# [ True False] 
# [False False]], 
#  fill_value = 0) 
2
test[:, ~np.all(test == 0, axis=0)] 
0
In [13]: test 
Out[13]: 
masked_array(data = 
[[1 -- --] 
[-- 3 --] 
[1 4 --]], 
      mask = 
[[False True True] 
[ True False True] 
[False False True]], 
     fill_value = 0) 


In [14]: test[:, :2] 
Out[14]: 
masked_array(data = 
[[1 --] 
[-- 3] 
[1 4]], 
      mask = 
[[False True] 
[ True False] 
[False False]], 
     fill_value = 0)