如何使用 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]
。基本的方法是遍历 a
和 b
的所有元素,但我认为使用 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)
我有两个数组 a=[1,2,3,4]
和 b=[2,3]
。我想知道是否有一种基于数组元素比较的有效方法来构造布尔二维数组 c
(二维矩阵,即 2*4 矩阵),即 c[0,0] = true
iff a[0] == b[0]
。基本的方法是遍历 a
和 b
的所有元素,但我认为使用 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)