Python中的np.vectorize函数问题

2024-09-27 09:36:59 发布

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

我创建了以下代码:

def scalar_function(x, y):
    if x <= y:
        z = x*y
    else:
        z = x/y
    return z

def vector_function(x, y):
    vfunc = np.vectorize(scalar_function)
    return vfunc

但是当我尝试放置:vector_function([1, 2, 3, 4], 2)时,输出是<numpy.vectorize at 0x226a1d9aeb8>,而不是结果的数字数组

有人能指出我的错误吗?谢谢


Tags: 代码numpyreturnifdefnpfunction数字
2条回答

您有返回return vfunc,它返回您得到的向量化函数。您可能需要return vfunc(x,y)

>>> def vector_function(x, y):
        vfunc = np.vectorize(scalar_function)
        return vfunc(x, y)

>>> vector_function([1, 2, 3, 4], 2)
array([2, 4, 1, 2])

不需要np.vectorize

x = np.asarray(x)
y = np.asarray(y)
np.where(x <= y, x*y, x/y)

执行相同的操作,并且实际上是矢量化的

相关问题 更多 >

    热门问题