组合两个numpy数组以形成每个数组中具有最大值的数组

Mic*_*l T 8 python arrays numpy max

我想组合两个numpy数组来生成一个数组,每个数组的值最大.

import numpy as np

a  = np.array([[ 0.,  0.,  0.5],
               [ 0.1,  0.5,  0.5],
               [ 0.1,  0.,  0.]])

b  = np.array([[ 0.,  0.,  0.0],
               [ 0.5,  0.1,  0.5],
               [ 0.5,  0.1,  0.]])
Run Code Online (Sandbox Code Playgroud)

我想生产

array([[ 0.,  0.,  0.5],
       [ 0.5,  0.5,  0.5],
       [ 0.5,  0.1,  0.]])
Run Code Online (Sandbox Code Playgroud)

我知道你能做到

a += b
Run Code Online (Sandbox Code Playgroud)

结果

array([[ 0. ,  0. ,  0.5],
       [ 0.6,  0.6,  1. ],
       [ 0.6,  0.1,  0. ]])
Run Code Online (Sandbox Code Playgroud)

这显然不是我追求的.这似乎是一个简单的问题,我认为最有可能.

Ale*_*ley 7

您可以使用np.maximum来计算两个数组的元素最大值:

>>> np.maximum(a, b)
array([[ 0. ,  0. ,  0.5],
       [ 0.5,  0.5,  0.5],
       [ 0.5,  0.1,  0. ]])
Run Code Online (Sandbox Code Playgroud)

这适用于任何两个数组,只要它们的形状相同,或者一个可以广播到另一个的形状。

a就地修改数组,您可以将输出重定向np.maximuma

np.maximum(a, b, out=a)
Run Code Online (Sandbox Code Playgroud)

还有np.minimum用于计算两个数组的元素最小值。


Fal*_*lko 6

您正在寻找元素最大值.

例:

>>> np.maximum([2, 3, 4], [1, 5, 2])
array([2, 5, 4])
Run Code Online (Sandbox Code Playgroud)

http://docs.scipy.org/doc/numpy/reference/generated/numpy.maximum.html