2012-06-03 57 views
1

我有两个(A,B)相同的有限,但任意大,只在运行时形状和尺寸已知的布尔阵列。如何将numpy数组映射到另一个?

我想计算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”的布尔值,但是也没有找到任何东西。

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

回答

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) 
2

是的,有在NumPy的一个功能:

numpy.logical_and(A,B) 
相关问题