我有两个(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”的布尔值,但也找不到任何东西。
你知道吗,这可能会有所帮助吗?
答案 0 :(得分:3)
你也可以使用&amp;操作者:
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)
答案 1 :(得分:2)
是的,NumPy中有一个功能:
numpy.logical_and(A,B)