您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何有条件地合并两个相同形状的Numpy数组

如何有条件地合并两个相同形状的Numpy数组

我们可以使用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-wiseGrep对于这些,我得到了以下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

其他 2022/1/1 18:33:43 有470人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶