python函数和np.vectorize的问题

2024-09-29 03:35:40 发布

您现在位置:Python中文网/ 问答频道 /正文

在我开始提问之前,我很抱歉不能熟练地用英语表达我的问题,也不能用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])

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

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

谢谢你阅读这个问题


Tags: 函数代码returnif定义defnp数组
1条回答
网友
1楼 · 发布于 2024-09-29 03:35:40

错误来自您的返回:您只将数字返回为整数,因此vectorize理解您只使用整数,因此当您给出1和0时,vH只给出整数。你应该做的是返回浮动,如果你想的话,可以在之后转换它们

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)

对我来说,它返回:

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

相关问题 更多 >