gpt4 book ai didi

python - 如果 x 是负 float 的向量,则 numpy x**L 运算符给出 NaN

转载 作者:太空宇宙 更新时间:2023-11-04 00:49:58 26 4
gpt4 key购买 nike

我遇到了 python numpy 的一个奇怪行为;如果我考虑以下代码:

import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
x=np.linspace(-1.0, 0.0, 5)
L=1.65
y=x**L
plt.plot(x,y)
plt.show()

向量y=[nan,nan,nan,nan,0.],如果代码如下:

import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
x=np.linspace(0.0, 1.0, 5)
L=1.65
y=x**L
plt.plot(x,y)
plt.show()

结果 y=[0.,0.10153155,0.31864016,0.62208694,1.] 是正确的。

那么问题是什么问题呢?是错误还是我做错了什么?我正在使用 Python 2.7.11 | python 4.0.0。

最佳答案

负实数不能求分数次幂

python 2.7 中尝试执行 (-1)**1.65 并查看 python 错误

正如@Blckknght 在评论中提到的,给定 (-1)**1.65python 3 将自动返回一个复数,而不是引发异常

要实现你想要的,你需要将数组 x 转换为复数

import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
x=np.linspace(-1.0, 0.0, 5).astype(np.complex64)
L=1.65
y=x**L
plt.plot(x,y)
plt.show()

检查 ValueError: negative number cannot be raised to a fractional powerHow to raise arrays with negative values to fractional power in Python?

关于python - 如果 x 是负 float 的向量,则 numpy x**L 运算符给出 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37548674/

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