1

我有两个 (A, B) 相同有限但任意大的布尔数组,并且仅在运行时形状和尺寸时才知道。

我想计算 A 和 B 中相应元素的布尔函数的值并将它们存储在 C 中。最后我需要一个 C 为真的元组列表。

如何到那?

我不想遍历单个元素,因为我不知道有多少维度,必须有更好的方法。

>>> 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 回答