如何使用 numpy 从两个一维数组生成 bool 二维数组

How to generate a bool 2D arrays from two 1D arrays using numpy

我有两个数组 a=[1,2,3,4]b=[2,3]。我想知道是否有一种基于数组元素比较的有效方法来构造布尔二维数组 c(二维矩阵,即 2*4 矩阵),即 c[0,0] = true iff a[0] == b[0]。基本的方法是遍历 ab 的所有元素,但我认为使用 numpy 可能更好。我检查了 numpy 参考资料,但找不到完全可以做到这一点的例程。

感谢

如果我对问题的理解正确,您可以使用 np.newaxis/None to form a 2D array and then perform equality check against a, which will bring in broadcasting 扩展 b 的维度以获得矢量化解决方案,就像这样 -

b[:,None] == a

样本运行-

In [5]: a
Out[5]: array([1, 2, 3, 4])

In [6]: b
Out[6]: array([2, 3])

In [7]: b[:,None] == a
Out[7]: 
array([[False,  True, False, False],
       [False, False,  True, False]], dtype=bool)