如何将numpy数组映射到另一个?

时间:2012-06-03 16:53:52

标签: python multidimensional-array numpy

我有两个(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”的布尔值,但也找不到任何东西。

你知道吗,这可能会有所帮助吗?

2 个答案:

答案 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)
相关问题