我通过了numpy.vectorize
文档。我不明白文档中句子的含义:
排除参数可用于防止对某些参数进行矢量化。这对于固定长度的类似数组的参数很有用,例如polyval中多项式的系数。
我在那里找到了以下示例(我添加print()
了用于探索我的疑问的声明,如下所述):
def mypolyval(p, x):
print('Called mypolyval: ',(p,x))
_p = list(p)
res = _p.pop(0)
while _p:
res = res*x + _p.pop(0)
return res
vpolyval = np.vectorize(mypolyval, excluded=['p'])
res2 = vpolyval(p=[1, 2, 3], x=[0, 1])
print(res2)
没有的输出print()
是[3,6]
。所以,我觉得通过调用它两次numpy.vectorize
来进行评估mypolyval
,一次是每个元素,每次都x
传递完整的p
数组。这就是为什么输出包含两个元素3
和6
. 但是当我调试时,它运行了三次,两次x=0
使用x=1
. 为了确认我的调试观察,我添加了print()
声明。这是输出,证实了我的调试观察:
Called mypolyval: ([1, 2, 3], 0)
Called mypolyval: ([1, 2, 3], 0)
Called mypolyval: ([1, 2, 3], 1)
[3 6]
那么,我认为它应该只为x=0
or执行两次是不正确的x=1
吗?