我想组合两个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.]])
我想制作
array([[ 0., 0., 0.5],
[ 0.5, 0.5, 0.5],
[ 0.5, 0.1, 0.]])
我知道你可以做到
a += b
导致
array([[ 0. , 0. , 0.5],
[ 0.6, 0.6, 1. ],
[ 0.6, 0.1, 0. ]])
这显然不是我追求的目标。这似乎是一个容易出问题的问题,我认为最有可能是这样。
答案 0 :(得分:6)
您正在寻找以元素为单位的最大值。
示例:强>
>>> np.maximum([2, 3, 4], [1, 5, 2])
array([2, 5, 4])
http://docs.scipy.org/doc/numpy/reference/generated/numpy.maximum.html
答案 1 :(得分:4)
您可以使用np.maximum
来计算两个数组的元素最大值:
>>> np.maximum(a, b)
array([[ 0. , 0. , 0.5],
[ 0.5, 0.5, 0.5],
[ 0.5, 0.1, 0. ]])
这适用于任何两个数组,只要它们的形状相同或者另一个形状可以broadcast。
要就地修改数组a
,您可以将np.maximum
的输出重定向回a
:
np.maximum(a, b, out=a)
还有np.minimum
用于计算两个数组的元素最小值。
答案 2 :(得分:3)
inds = b > a
a[inds] = b[inds]
这会修改原始数组a
,这是+=
在您的示例中所做的事情,可能是您想要的,也可能不是。