0

私は2つの配列を持っています

a = array([1,2,3])    
b = array([2,7])

ここで、a の要素が b にあり、返される答えが (False、True、False) であるかどうかを確認したいと思います。関数を使わずにこれを行う簡単な方法はありますか?

4

4 に答える 4

3

これはどう:

>>> numpy.setmember1d(a, b)
array([False,  True, False], dtype=bool)

更新、ありがとうセバーグ。numpy の新しいバージョンでは、次のようになります。

>>> numpy.in1d(a, b)
array([False,  True, False], dtype=bool)
于 2012-09-27T16:47:46.173 に答える
2

標準の python リストの場合:

>>> a = [1, 2, 3]
>>> b = [2, 7]
>>> tuple(x in b for x in a)
(False, True, False)

関数が反復と演算子arrayの両方をサポートするオブジェクトを返すと仮定すると、同じように機能するはずです。in

于 2012-09-27T10:09:52.247 に答える
2

numpy のみを使用:

>>> (a[:,None] == b).any(axis=-1)

a(したがって、 a(N,)から配列に変換し、 (N,1)numpy のブロードキャストを使用して等しいかどうかをテストします。最終的には配列になり (形状がある(N, M)と仮定して...)、各行に a があるかどうかを.b(M,)Trueany(axis=-1)

于 2012-09-27T10:24:58.413 に答える
1

さて、これは私がリストでそれを行う方法です:

>>> a = [1, 2, 3]
>>> b = [2, 7]
>>> result = []
>>>
>>> for x in a:
...    result.append(x in b)
...
>>> print result
[False, True, False]
于 2012-09-27T10:10:54.363 に答える