为什么numpy的vectorize函数对第一个元素执行两次

qyyhg6bp  于 2023-04-06  发布在  其他
关注(0)|答案(1)|浏览(134)

这个问题很容易理解,但它令人困惑,这是我在python控制台中的代码:

import numpy as np
l=[]
def g(x):
    l.append(x)
    return x
k=np.arange(10)
np.vectorize(g)(k)
>>l
>>[0,0,1,2,..,9,10]

为什么列出l有两个零

cunj1qz1

cunj1qz11#

这是因为如果你没有为vectorize指定一个otypes参数,那么numpy就不知道输出类型。它通过首先运行第一个元素的向量化函数来确定这一点。一旦它从第一次调用中知道了输出类型,它就会再次为从第一个元素开始的所有元素调用这个函数。
这在vectorize文档和文档中的示例中提到过,但很容易被忽略。

相关问题