我们可以使用NumPy内置的np.maximum
,正是为此而制作的-
np.maximum(array1, array2)
另一种方式是使用NumPy的ufuncnp.max
上的2D
堆叠阵列和max- reduce
沿着第一轴线(axis=0)
-
np.max([array1,array2],axis=0)
100万个数据集上的时间-
In [271]: array1 = np.random.randint(0,9,(1000000))
In [272]: array2 = np.random.randint(0,9,(1000000))
In [274]: %timeit np.maximum(array1, array2)
1000 loops, best of 3: 1.25 ms per loop
In [275]: %timeit np.max([array1, array2],axis=0)
100 loops, best of 3: 3.31 ms per loop
# @Eric Duminil's soln1
In [276]: %timeit np.where( array1 > array2, array1, array2)
100 loops, best of 3: 5.15 ms per loop
# @Eric Duminil's soln2
In [277]: magic = lambda x,y : np.where(x > y , x, y)
In [278]: %timeit magic(array1, array2)
100 loops, best of 3: 5.13 ms per loop
同样,可以np.minimum
在两个相同或可广播形状的数组之间找到按元素的最小值。因此,要找到array1
和之间的逐元素最小值array2
,我们将有:
np.minimum(array1, array2)
有关ufuncs
支持此功能的完整列表,请参考 并寻找关键字:element-wise
。Grep
对于这些,我得到了以下ufuncs:
加,减,乘,除,logaddexp,logaddexp2,true_divide,floor_divide,幂,余数,mod,fmod,divmod,heaviside,gcd,lcm,arctan2,hypot,bitwise_and,bitwise_or,bitwise_xor,left_shift,right_shift,更大,更大等于较少,less_equal,not_equal,equal,逻辑与,逻辑或,逻辑异或,最大值,最小值,fmax,fmin,copysign,nextafter,ldexp,fmod