我寫的Python這個簡單的代碼:NumPy的指數不工作,因爲它應該
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-400,400,80)
y = np.exp(-1/35*np.absolute(x))
plt.plot(x,y)
plt.show()
下面是我得到的圖形:
爲什麼做算盤打錯了? 我沒有使用八度相同的圖形:
誰能幫我,好嗎?
我寫的Python這個簡單的代碼:NumPy的指數不工作,因爲它應該
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-400,400,80)
y = np.exp(-1/35*np.absolute(x))
plt.plot(x,y)
plt.show()
下面是我得到的圖形:
爲什麼做算盤打錯了? 我沒有使用八度相同的圖形:
誰能幫我,好嗎?
當您打算使用浮點時,您正在使用整數算術。
試試這個:
y = np.exp(-1.0/35*np.absolute(x))
在Python2,<int>/<int>
產生一個下舍入整數。在Python3中,同一個表達式產生一個浮點值。
做到這一點同樣結果的其他途徑有:
y = np.exp(float(1)/35*np.absolute(x))
from __future__ import division
... y = np.exp(1/35*np.absolute(x))
它工作!非常感謝! –
我在程序開始時使用'from __future__ import division'來防止這種情況。切換到python 3是另一種選擇。 – Neapolitan
python 3和python 2.7之間的區別有多大? –
我無法複製此內容。由於linspace產生的點的間距,我得到了一個類似的情節,雖然有一個平頂。它看起來像你實際上使用y = np.exp(-x),沒有35. – aquirdturtle
@aquirdturtle - 我相信這是因爲OP使用python2而你使用python3。 –
啊,也許我確實在使用python3。儘管如果我使用y = np.exp(-x),這完美地再現了他的情節,所以這也可能與錯誤相關聯。 – aquirdturtle