“小于/大于”N维和(N-k)维numpy数组的比较

时间:2016-01-05 18:11:11

标签: python arrays python-3.x numpy compare

给定两个数组a=np.array([[1, 3], [3, 4]])b=np.array([2, 2])

目标:通过np.array([False, True])等操作获取数组a>b。即比较行(True如果每对元素满足>运算符False)而不是元素比较(即我想要获取{{1 }})。

类似于3维和(可选)N维阵列。 例如。

np.array([[False, True], [True, True]])

a1 = np.array([[[1, 2, 1], [2, 3, 2]], [[3, 4, 3], [4, 3, 4]]]) b1 = np.array([1, 1, 1]) 之类的操作必须返回a1 > b1

怎么做?

1 个答案:

答案 0 :(得分:4)

找到解决方案:另外使用numpy.all函数。

我的例子的用法:

np.array([[False, True], [True, True]])

结果:

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允许使用numpy数组的ndarray.all方法。然后,示例可以分别重写为numpy.all(a>b).all(axis=1)