python 函数和 np.vectorize 有问题

problem with python function and np.vectorize

在我开始提问之前,很抱歉不能熟练地用英语表达我的问题并做python...

为了练习np.vectorize,我正在写一些代码。

def H(x):
if x == 0 : 
    return 0.5
elif x > 0:
    return 1
else :
    return 0

然后,我将vH定义为向量化函数。

vH = np.vectorize(H)

它按我预期的那样工作。

vH(0)
array(0.5)

但是,当输入数组为负数时,它不适用于“零”。

a = np.array([ -1,  0. , 0, 1 ])
vH(a)
array([0, 0, 0, 1])              # I expect the result array([0, 0.5, 0.5, 1])

我试着找出这个问题的原因和解决办法。 我真的不知道为什么会这样... 我错过了什么吗???

请回答为什么会发生以及如何解决

感谢您阅读此问题!

错误来自你的 returns :你只 return 数字作为整数,所以 vectorize 理解你只使用整数,所以当你给出 1 和 0 时,你的 vH 只给出整数。你应该做的是 return 浮动,如果你愿意,可以在之后转换它们。

def H(x):
    if x == 0:
        return 0.5
    elif x > 0:
        return 1.
    else :
        return 0.
vH = np.vectorize(H)
a = np.array([ -1,  0 , 0, 1 ])
vH(a)

对我来说,它 returned :

array([0. , 0.5, 0.5, 1. ])