2 番目の列が 4 または 6 に等しい行をフェッチするにはどうすればよいですか?
a = np.array(np.mat('1 2; 3 4; 5 6; 7 4'))
b = [4,6]
どうやら、これは機能しません:
c = a[a[:,1] in b]
これを行う numpythonic の方法はin1d
、次のようなものを使用することです。
a[np.in1d(a[:, 1], b)]
[x for x in a if x[1] in (4,6,)] は、あなたが言及した場合にそれを行う必要があります。
編集: @georgesl が示唆するように、「理想的な方法」は、文字列に対して numpy.mat メソッドを使用するのではなく、配列の構築中にイテレータを使用することです。
あなたが使用することができますitertools.ifilter
:
from itertools import ifilter
c = np.array([ e for e in ifilter(lambda x: x[1] in b, a) ])
>> array([[3,4],
[5,6],
[7,4]])