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