Python 使用`np.vectorize`

Python 使用`np.vectorize`,python,numpy,vectorization,Python,Numpy,Vectorization,我想使用np.vectorize对以下函数进行矢量化: def f(x): if 0<=x<=1: return 0.5 elif 1<x<=3: return 0.25 else: return 0 但是,如果我在f的输入数组中输入负值,所有输出值都会突然变为零。当所有值都为正值时,没有问题。例如: f([-0.1,1,2,3,4]) 输出为: array([0, 0, 0, 0, 0]) 问题在于数组的类型。据 向量化输出的数据类型是通过

我想使用
np.vectorize
对以下函数进行矢量化:

def f(x):
if 0<=x<=1:
    return 0.5
elif 1<x<=3:
    return 0.25
else:
    return 0

但是,如果我在
f
的输入数组中输入负值,所有输出值都会突然变为零。当所有值都为正值时,没有问题。例如:

f([-0.1,1,2,3,4])
输出为:

array([0, 0, 0, 0, 0])

问题在于数组的类型。据

向量化输出的数据类型是通过使用输入的第一个元素调用函数来确定的

类型由第一个值决定,即
0
,因此类型为整数。如果返回
0.25
0.5
,它将转换为
0
(作为
int(0.25)
int(0.5)
0

解决方案:

f=np.矢量化(f,“d”)

返回0.0或float(0),但必须是float

“所有输出值突然变为零”,因为负数不属于第一个条件
如果0@Jan,则第一个元素可以正确。不适用于其他五个元素。请阅读其所有文档,包括关于
otypes
的部分和speed免责声明!
array([0, 0, 0, 0, 0])