numpy中的vectorize和frompyfunc有什么区别?
两者看起来非常相似。他们每个人的典型用例是什么?
编辑:正如JoshAdel所指出的,vectorize
类似乎建立在frompyfunc
之上。 (请参阅the source)。我仍然不清楚frompyfunc
是否可能具有vectorize
未涵盖的任何用例...
最佳答案
正如JoshAdel指出的那样,vectorize
包装了frompyfunc
。 Vectorize添加了其他功能:
编辑:经过一些简短的基准测试后,我发现对于大型数组,
vectorize
比frompyfunc
显着慢(〜50%)。如果性能对您的应用程序至关重要,请首先对用例进行基准测试。`
>>> a = numpy.indices((3,3)).sum(0)
>>> print a, a.dtype
[[0 1 2]
[1 2 3]
[2 3 4]] int32
>>> def f(x,y):
"""Returns 2 times x plus y"""
return 2*x+y
>>> f_vectorize = numpy.vectorize(f)
>>> f_frompyfunc = numpy.frompyfunc(f, 2, 1)
>>> f_vectorize.__doc__
'Returns 2 times x plus y'
>>> f_frompyfunc.__doc__
'f (vectorized)(x1, x2[, out])\n\ndynamic ufunc based on a python function'
>>> f_vectorize(a,2)
array([[ 2, 4, 6],
[ 4, 6, 8],
[ 6, 8, 10]])
>>> f_frompyfunc(a,2)
array([[2, 4, 6],
[4, 6, 8],
[6, 8, 10]], dtype=object)
`