Python:np.vectorize返回“浮点数”

use*_*051 3 python numpy vectorization floating piecewise

运行以下代码:

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()
Run Code Online (Sandbox Code Playgroud)

我得到了情节: 在此处输入图片说明

但是,当我尝试绘制ton值时,wchich不同于零,例如:

xontest = vxon(2, t)
Run Code Online (Sandbox Code Playgroud)

该图似乎将所有xon值舍入为整数:

在此处输入图片说明

我的代码中有什么导致这种行为?

use*_*051 5

找到了问题。线

vxon = np.vectorize(xon)
Run Code Online (Sandbox Code Playgroud)

应该写成

vxon = np.vectorize(xon, otypes=[np.float])
Run Code Online (Sandbox Code Playgroud)

谢谢das-g向我展示了挖掘方向。