2016-03-12 29 views
1

運行下面的代碼:的Python:np.vectorize返回「浮動」

import matplotlib.pyplot as plt 
import numpy as np 

def xon (ton, t): 
    if ton <= t: 
     return (t-ton)/5 
    else: 
     return 0 

vxon = np.vectorize(xon) 
t = np.linspace(0, 49, 50)  
xontest = vxon(0, t) 
plt.plot(t, xontest, '-') 
plt.show() 

我得到的情節: enter image description here

但是,當我嘗試繪圖爲每噸值,wchich不同大於零,如:

xontest = vxon(2, t) 

情節似乎轉了所有的XON值整數

enter image description here

什麼在我的代碼導致這樣的行爲?

+1

如果你正在使用Python2,可能會改變'return(t-ton)/ 5'到'return(t-ton)/ 5.0'。 – zondo

+1

對不起,看錯了號碼。它是2.7.9。 – Tanja

+0

我刪除了我的答案,因爲它完全偏離了軌道。雖然'5'是一個整數,在你的情況下't'不是一個整數。相反,它是NumPy的'numpy.float64'值或類似的數組。 (我想可能取決於系統。)因此,Python 2的整數劃分是地板劃分的怪癖在這裏不起作用。 –

回答

2

發現問題。該生產線

vxon = np.vectorize(xon) 

應該寫成

vxon = np.vectorize(xon, otypes=[np.float]) 

謝謝,DAS-G,用於顯示我在哪個方向挖。