【问题标题】:How to generate a bool 2D arrays from two 1D arrays using numpy如何使用 numpy 从两个 1D 数组生成 bool 2D 数组
【发布时间】:2016-01-16 13:38:12
【问题描述】:

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

谢谢

【问题讨论】:

    标签: python arrays numpy comparison vectorization


    【解决方案1】:

    如果我正确理解了这个问题,您可以使用np.newaxis/None 扩展b 的维度以形成2D 数组,然后对a 执行相等性检查,这将为矢量化引入broadcasting解决方案,就像这样 -

    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)
    

    【讨论】:

    • 代码效果很好,我想知道如果我想要一个 4*2 矩阵而不是示例中显示的 2*4 矩阵怎么办?
    • @daiyue 在这种情况下扩展a 并与b 进行比较:a[:,None] == b
    猜你喜欢
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 2017-06-18
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 2022-09-23
    相关资源
    最近更新 更多