给定两个数组a=np.array([[1, 3], [3, 4]])
和b=np.array([2, 2])
。
目标:np.array([False, True])
通过类似的操作获取数组a>b
。即比较行(True
如果每对要素的满足>
运营商其他False
),而不是按元素比较(即我不希望GET np.array([[False, True], [True, True]])
)。
对于3-D和(可选)N维数组,也是如此。例如
a1 = np.array([[[1, 2, 1], [2, 3, 2]], [[3, 4, 3], [4, 3, 4]]]) b1 = np.array([1, 1, 1])
操作就像a1 > b1
必须返回np.array([[False, True], [True, True]])
。
怎么做?
找到解决方案:使用附加numpy.all
功能。
我的示例的用法:
a=np.array([[1, 3], [3, 4]]) b=np.array([2, 2]) numpy.all(a > b, axis=1)
结果:
array([False, True], dtype=bool)
和
a1 = np.array([[[1, 2, 1], [2, 3, 2]], [[3, 4, 3], [4, 3, 4]]]) b1 = np.array([1, 1, 1]) numpy.all(a1 > b1, axis=2)
结果:
array([[False, True], [ True, True]], dtype=bool)
numpy.all
还允许传递多个轴(作为int元组),因此它可用于任何尺寸。
另外numpy允许使用ndarray.all
numpy数组的方法。然后可以将示例分别重写为(a>b).all(axis=1)
和(a1>b1).all(axis=2)
。