我正在尝试在元素比较中返回多个数组的最大值。例如:
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)