2013-10-15 30 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)