Pandasで条件を指定して行・列を抜き出すやつが有ると思います.正式名称は分かりませんが,df[val>0]みたいなやつです.Numpyのarrayでおんなじことが出来るか試したので,メモ書きしておきます.
まずはこんな感じで配列を作ります.そして1個飛ばしで列を獲得できるかやってみます.
In [31]: import numpy as np In [32]: a = np.array([[ 0, 1, 2, 3], ...: [ 4, 5, 6, 7], ...: [ 8, 9, 10, 11], ...: [12, 13, 14, 15]]) In [33]: label = np.array([ 0, 1, 0, 1]) In [34]: mask = (label == 1)
まずは一個飛ばしで列を獲得してみます.
In [35]: a[:,mask] Out[35]: array([[ 1, 3], [ 5, 7], [ 9, 11], [13, 15]])
続いて一個飛ばしで行を獲得してみます.
In [36]: a[mask,:] Out[36]: array([[ 4, 5, 6, 7], [12, 13, 14, 15]])
それでは,一個飛ばしで行と列の両方を獲得するにはどうやるのでしょう?
In [37]: a[mask,mask] Out[37]: array([ 5, 15])
これだと上手く行かないので,次のように書いてみました.
In [38]: a[:,mask][mask,:] Out[38]: array([[ 5, 7], [13, 15]])