saw*_*yer 6 python arrays numpy
我想在numpy数组中取每个值的平方根,同时保留值的符号(并且在负数时不返回复数) - 带符号的平方根.
下面的代码演示了列表所需的功能,但没有利用numpy优化的数组操作超级大国.
def signed_sqrt(list):
new_list = []
for v in arr:
sign = 1
if v < 0:
sign = -1
sqrt = cmath.sqrt(abs(v))
new_v = sqrt * sign
new_list.append(new_v)
list = [1., 81., -7., 4., -16.]
list = signed_sqrt(list)
# [1., 9., -2.6457, 2. -4.]
Run Code Online (Sandbox Code Playgroud)
对于某些情况,我正在计算[数千]图像比较的Hellinger内核.
用numpy做任何顺利的方法吗?谢谢.
drg*_*ove 15
您可以尝试使用该numpy.sign函数捕获符号,并只取绝对值的平方根.
import numpy as np
x = np.array([-1, 1, 100, 16, -100, -16])
y = np.sqrt(np.abs(x)) * np.sign(x)
# [-1, 1, 10, 4, -10, -4]
Run Code Online (Sandbox Code Playgroud)