2016-05-21 105 views
2

我寫的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() 

下面是我得到的圖形:

enter image description here

爲什麼做算盤打錯了? 我沒有使用八度相同的圖形:

enter image description here

誰能幫我,好嗎?

+0

我無法複製此內容。由於linspace產生的點的間距,我得到了一個類似的情節,雖然有一個平頂。它看起來像你實際上使用y = np.exp(-x),沒有35. – aquirdturtle

+0

@aquirdturtle - 我相信這是因爲OP使用python2而你使用python3。 –

+0

啊,也許我確實在使用python3。儘管如果我使用y = np.exp(-x),這完美地再現了他的情節,所以這也可能與錯誤相關聯。 – aquirdturtle

回答

1

當您打算使用浮點時,您正在使用整數算術。

試試這個:

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))
  • 使用Python3。
+0

它工作!非常感謝! –

+1

我在程序開始時使用'from __future__ import division'來防止這種情況。切換到python 3是另一種選擇。 – Neapolitan

+0

python 3和python 2.7之間的區別有多大? –

相關問題