这个问题很容易理解,但它令人困惑,这是我在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有两个零
cunj1qz11#
这是因为如果你没有为vectorize指定一个otypes参数,那么numpy就不知道输出类型。它通过首先运行第一个元素的向量化函数来确定这一点。一旦它从第一次调用中知道了输出类型,它就会再次为从第一个元素开始的所有元素调用这个函数。这在vectorize文档和文档中的示例中提到过,但很容易被忽略。
vectorize
otypes
1条答案
按热度按时间cunj1qz11#
这是因为如果你没有为
vectorize
指定一个otypes
参数,那么numpy就不知道输出类型。它通过首先运行第一个元素的向量化函数来确定这一点。一旦它从第一次调用中知道了输出类型,它就会再次为从第一个元素开始的所有元素调用这个函数。这在vectorize文档和文档中的示例中提到过,但很容易被忽略。