5

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]
4

4 に答える 4

10

これを行う numpythonic の方法はin1d、次のようなものを使用することです。

a[np.in1d(a[:, 1], b)]
于 2013-10-01T13:25:06.427 に答える
2

[x for x in a if x[1] in (4,6,)] は、あなたが言及した場合にそれを行う必要があります。

編集: @georgesl が示唆するように、「理想的な方法」は、文字列に対して numpy.mat メソッドを使用するのではなく、配列の構築中にイテレータを使用することです。

于 2013-10-01T08:53:31.583 に答える
1

あなたが使用することができます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]])
于 2013-10-01T08:37:16.853 に答える