gpt4 book ai didi

python - Numpy 第 n 个奇数根,包括负值

转载 作者:行者123 更新时间:2023-11-28 19:02:58 25 4
gpt4 key购买 nike

我想在 python 中计算一些数字的 n 次奇数根。 Numpy 作为立方根函数。使用该函数我可以计算 x^(1/3)。

x = np.linspace(-100,100,100)
np.cbrt(x)
>>> array([-4.64158883, -4.26859722, -3.81571414, -3.21829795, -2.23144317,
2.23144317, 3.21829795, 3.81571414, 4.26859722, 4.64158883])

但是,如果我想以一种直接的方式为其他第 k 个奇数根计算相同的东西,我就有点卡住了。我不能直接使用 np.power,甚至不能计算立方根:

np.power(x,1./3)
>>> array([ nan, nan, nan, nan, nan,
2.23144317, 3.21829795, 3.81571414, 4.26859722, 4.64158883])

(-100.)**(1./3)
>>> ValueError: negative number cannot be raised to a fractional power

我可以计算 x 的绝对值的第 k 个奇数根,然后相应地更改 x 中负数项的符号,但我想知道是否有更直接的方法。这是我目前的解决方案:

def kth_root(x,k):
if k % 2 != 0:
res = np.power(np.abs(x),1./k)
return res*np.sign(x)
else:
return np.power(np.abs(x),1./k)

kth_root(x,3)
>>> array([-4.64158883, -4.26859722, -3.81571414, -3.21829795, -2.23144317,
2.23144317, 3.21829795, 3.81571414, 4.26859722, 4.64158883])

最佳答案

我将用我当前的解决方案回答我自己的问题。这并不是说不存在更简单或更快的方法。

def kth_root(x,k):
if k % 2 != 0:
res = np.power(np.abs(x),1./k)
return res*np.sign(x)
else:
return np.power(np.abs(x),1./k)


x = np.linspace(-100,100,100)
kth_root(x,3)
>>> array([-4.64158883, -4.26859722, -3.81571414, -3.21829795, -2.23144317,
2.23144317, 3.21829795, 3.81571414, 4.26859722, 4.64158883])

关于python - Numpy 第 n 个奇数根,包括负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50491326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com