Oli*_*ier 30 python arrays numpy vectorization
numpy中vectorize和frompyfunc有什么区别?
两者看起来非常相似.每个人的典型用例是什么?
编辑:正如JoshAdel所指出的,这个课程vectorize似乎是建立在上面的frompyfunc.(见来源).我还不清楚是否frompyfunc可能有任何未被vectorize...... 覆盖的用例
Stu*_*erg 17
正如约什阿德尔指出的那样,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)
Run Code Online (Sandbox Code Playgroud)
`
我不确定每个用例的不同用例是什么,但是如果你看一下源代码(/numpy/lib/function_base.py),你就会看到它的vectorize包装frompyfunc.我对代码的阅读主要vectorize是正确处理输入参数.可能有一些特殊的情况,你更喜欢一个与另一个,但它似乎frompyfunc只是一个较低级别的实例vectorize.
小智 6
虽然这两种方法都为您提供了构建自己的ufunc 的方法,但numpy.frompyfunc方法始终返回一个 python 对象,而您可以在使用numpy.vectorize方法时指定返回类型
| 归档时间: |
|
| 查看次数: |
4134 次 |
| 最近记录: |