1

同じ有限の 2 つの (A, B) ブール配列がありますが、任意に大きく、実行時の形状と次元でのみ認識されます。

A と B の対応する要素のブール関数の値を計算し、それらを C に格納したいと考えています。最後に、C が true であるタプルのリストが必要です。

そこに着く方法?

単一の要素を反復処理したくありません。次元がいくつあるかわからないため、より良い方法が必要です。

>>> A = array([True, False, True, False, True, False]).reshape(2,3)
>>> B = array([True, True, False, True, True, False]).reshape(2,3)
>>> A == B
array([[ True, False, False],
       [False,  True,  True]], dtype=bool)

必要に応じて、しかし:

>>> A and B
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

「AとB」を取得するにはどうすればよいですか?

「map」、「zip」、「nditer」を試してみましたが、他の方法を検索してもうまくいきませんでした。

タプルに関しては、ブール値の「argmax」のようなものが必要ですが、何も見つかりませんでした。

役立つかもしれない何かを知っていますか?

4

2 に答える 2

3

& 演算子も使用できます。

In [5]: A & B

array([[ True, False, False],
       [False,  True, False]], dtype=bool)

logical_and 呼び出しの大きな利点は、out パラメーターを使用できることです。

In [6]: C = empty_like(A)

In [7]: logical_and(A, B, C)

array([[ True, False, False],
       [False,  True, False]], dtype=bool)
于 2012-06-04T07:23:03.427 に答える
2

はい、NumPy には次の関数があります。

numpy.logical_and(A,B)
于 2012-06-03T17:20:41.893 に答える