2
我遇到了python numpy的奇怪行爲;如果我考慮下面的代碼:numpy x ** L操作符給出NaN,如果x是負浮點數的向量
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 | Anaconda 4.0.0。
值得一提的是Python 3中,當你這樣做會自動返回一個'complex'值'(-1)** 1.65',而不是拋出異常。雖然這是新的行爲,'numpy'仍然表現相同的方式。 – Blckknght
謝謝,我很確定我確實做錯了什麼!當然,我必須使用複數,再次感謝... – LucaG