在多个python数组中应用条件

时间:2016-08-13 19:34:57

标签: python-2.7 numpy multidimensional-array

我有许多长度相同的数组:

a = [3,7,5,2,7]
b = [3,4,1,6,8]
c = [2,3,7,8,3]
d = [1,3,5,6,4]
e = [2,6,5,1,7]

我的条件是x> 2.我需要的是一个最终数组,检查条件是否适用于所有数组的每个位置。

结果将是:

[False, True, False, False, True]

甚至更好:

[0, 1, 0, 0, 1]

很抱歉,如果这很简单,我搜索了很长时间但只发现了相关主题,但没有一个完全回答这个问题。

1 个答案:

答案 0 :(得分:2)

将这些1D输入数组堆叠为2D数组与np.vstack的行,执行比较,然后沿第一个轴使用np.all。因此,实施将是 -

(np.vstack((a,b,c,d,e))>2).all(axis=0)

示例运行 -

>>> np.vstack((a,b,c,d,e)) # Stack as a 2D array
array([[3, 7, 5, 2, 7],
       [3, 4, 1, 6, 8],
       [2, 3, 7, 8, 3],
       [1, 3, 5, 6, 4],
       [2, 6, 5, 1, 7]])
>>> np.vstack((a,b,c,d,e))>2
array([[ True,  True,  True, False,  True],
       [ True,  True, False,  True,  True],
       [False,  True,  True,  True,  True],
       [False,  True,  True,  True,  True],
       [False,  True,  True, False,  True]], dtype=bool)
>>> (np.vstack((a,b,c,d,e))>2).all(axis=0)
array([False,  True, False, False,  True], dtype=bool)