从两个大小相等的numpy数组中创建最小幅度值的数组

9rbhqvlz  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(117)

我有两个无聊的数组:

import numpy as np
a=np.array([1,-2,3]) 
b=np.array([-2,-1,4])

字符串
我知道如何创建一个数组的最小值的每对条目:

np.minimum(a,b)
array([-2, -2,  3])


以及如何获得最小量值的绝对值数组。

np.minimum(abs(a),abs(b))
array([1, 1, 3])


但我想要的是一个最小量级值的数组,但要保留这些值的符号,换句话说,要得到

array([1,-1,3])


作为我的输出...我想不出一条Python式的方法在一行中做到这一点,只有诉诸于冗长的循环和如果-那么...

4zcjmb1e

4zcjmb1e1#

使用np.where,以绝对值作为条件,以原始数组作为返回元素:

np.where(np.abs(a) > np.abs(b), b, a)
# array([ 1, -1,  3])

字符串

pgpifvop

pgpifvop2#

使用np.where是最好的答案,但我刚刚使用Python迭代制定了一个替代解决方案:

np.array([a[i] if abs(a[i])<abs(b[i]) else b[i] for i in range(len(a))])

字符串
当然,np.where函数会快得多。

相关问题