当我们为某个向量调用向量化函数时,由于某种原因,它会为第一个向量元素调用两次. 原因是什么,我们可以摆脱这种奇怪的效果(例如,当这个函数需要有一些副作用时,例如,计数一些和等)
示例:
import numpy
@numpy.vectorize
def test(x):
print(x)
test([1,2,3])
结果:
1
1
2
3
numpy 1.26.4
当我们为某个向量调用向量化函数时,由于某种原因,它会为第一个向量元素调用两次. 原因是什么,我们可以摆脱这种奇怪的效果(例如,当这个函数需要有一些副作用时,例如,计数一些和等)
示例:
import numpy
@numpy.vectorize
def test(x):
print(x)
test([1,2,3])
结果:
1
1
2
3
numpy 1.26.4
这一点在vectorize
个文档中有很好的定义:
如果没有指定otype,则使用第一个参数对函数的调用来确定输出的数量.
如果你不想这样,你可以定义otypes
:
import numpy
def test(x):
print(x)
test = numpy.vectorize(test, otypes=[float])
test([1,2,3])
1
2
3
在任何情况下,请注意vectorize
只是Python循环的一个方便.如果你需要有副作用,你可能宁愿使用显式的Python循环.