逐行比较两个具有不同长度的numpy数组

Comparing two numpy arrays with different lengths line-wise

我正在尝试比较两个不同长度数组的所有元素。假设我有一个数组:

A = np.array([[15,25,22],[200,200,20]])

第二个数组是我要比较的数组:

B = np.array([[150., 350.],
 [250., 450.],
 [150., 350.],
 [400., 600.],
 [400., 600.],
 [650., 850.],
 [550., 750.],
 [650., 850.]])

我需要的是将 A (A[:, 0]) 中所有数组的索引 0 上的所有元素与数组 B (B[:, 0]) 中所有数组中索引 0 上的所有元素进行比较。

如果A只是一个简单的数组如A=[25,40,25],那么就简单的做成:

smaller = np.array(A[0] > B[:, 0]).astype('int')

我想我可以将它转换为二维比较,这样

smaller = np.array(A[:, 0] > B[:, 0]).astype('int')

这不起作用,错误很明显,ValueError: operands could not be broadcast together with shapes (2,) (8,)。我明白这种方式我无法比较它,但我无法找到如何比较的方法。

我想要的输出如下所示:

[[False, False, False, False, False, False, False, False],
 [True, False, True, False, False, False, False, False]]

这就是我能拥有的

np.array([A[i,0] > B[:, 0] for i in range(A.shape[0])])

感谢@MichaelSzczesny,我得到了我正在寻找的解决方案。只需将 [:, None] 添加到比较中即可:

smaller = np.array(A[:, 0][:, None] > B[:, 0]).astype('int')

中所述,它向数组添加了一个轴。于是从

[ 15 200]

我们得到

[[ 15]
 [200]]