我试图通过逐元素比较返回多个数组的最大值。例如:
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
。它会将一个二元函数反复应用于一组数值...np.maximum.reduce([A,B,C])
array([3,1,4])
首先,它计算A和B的最大值,然后计算(np.maximum
of A and B)和C的最大值。
你也可以使用:
np.column_stack([A, B, C]).max(axis=1)
这个结果与其他答案的解决方案相同。
我比较常使用Pandas而不是NumPy,所以对我来说,更容易把一维数组看作类似于Pandas Series。上面的代码等同于:
pd.concat([A, B, C], axis=1).max(axis=1)
reduce
,我不明白它为什么很重要。 - Daniel