【问题标题】:problem with python function and np.vectorizepython函数和np.vectorize的问题
【发布时间】:2021-05-05 12:17:39
【问题描述】:

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

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

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

感谢您阅读这个问题!

【问题讨论】:

  • 阅读关于返回值dtypeotypes 参数的内容。 vectorize 看起来很简单,但比看起来更棘手。而且它永远不会很快(呃)。

标签: python arrays numpy vectorization


【解决方案1】:

错误来自您的返回:您仅将数字作为整数返回,因此 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. ])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多