NumPy 中的元素级数组最大函数(两个以上的数组)



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

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

我希望生成的数组array([3,1,4]).

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

通过此设置:

>>> 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])

我会选择第一个选项。

您可以使用

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

您还可以使用:

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

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

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

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

最新更新