我有许多长度相同的数组:
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]
很抱歉,如果这很简单,我搜索了很长时间但只发现了相关主题,但没有一个完全回答这个问题。
答案 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)