【问题标题】:Element-wise array maximum function in NumPy (more than two arrays)NumPy 中的元素数组最大值函数(两个以上的数组)
【发布时间】:2014-03-16 00:03:36
【问题描述】:

我试图在逐元素比较中返回多个数组的最大值。例如:

A = array([0, 1, 2])
B = array([1, 0, 3])
C = array([3, 0, 4])

我希望结果数组为array([3,1,4])

我想使用numpy.maximum,但它只适用于两个数组。有两个以上数组的简单函数吗?

【问题讨论】:

    标签: python numpy max


    【解决方案1】:

    你也可以使用:

    np.column_stack([A, B, C]).max(axis=1)
    

    结果与其他答案的解决方案相同。

    我比 NumPy 更多地使用 Pandas,所以对我来说更容易将一维数组视为类似于 Pandas 系列的东西。以上将相当于:

    pd.concat([A, B, C], axis=1).max(axis=1)
    

    【讨论】:

      【解决方案2】:

      您可以使用reduce。它重复地将二进制函数应用于值列表...

      对于问题中给出的 A、B 和 C...

      np.maximum.reduce([A,B,C])
      
       array([3,1,4])
      

      它首先计算A和B的np.maximum,然后计算(A和B的np.maximum)和C的np.maximum

      【讨论】:

        【解决方案3】:

        使用此设置:

        >>> A = np.array([0,1,2])
        >>> B = np.array([1,0,3])
        >>> C = np.array([3,0,4])
        

        你可以这样做:

        >>> np.maximum.reduce([A,B,C])
        array([3, 1, 4])
        

        或者:

        >>> np.vstack([A,B,C]).max(axis=0)
        array([3, 1, 4])
        

        我会选择第一个选项。

        【讨论】:

        • 我会尝试从一开始就将数据保存在二维数组中,然后使用第二个选项。
        • @SvenMarnach 轴参数最后调用reduce,我不明白为什么重要。
        猜你喜欢
        • 2017-04-19
        • 1970-01-01
        • 1970-01-01
        • 2017-02-02
        • 2020-04-09
        • 2012-03-08
        • 1970-01-01
        • 1970-01-01
        • 2021-02-11
        相关资源
        最近更新 更多