代码之家  ›  专栏  ›  技术社区  ›  Alexander

如何使用多个参数使函数在numpy中向量化?

  •  3
  • Alexander  · 技术社区  · 16 年前

    我正在尝试使用scipy对给定函数进行拟合。scipy.optimize.leastsq需要一个矢量化函数作为输入参数之一。 这一切都很好,但是现在我有了一个更复杂的函数,它不是由scipy/numpy自动向量化的。

    def f1(a, parameters):
        b, c = parameters
        result = scipy.integrate.quad(integrand, lower, upper, (a, b, c))
        return result
    

    或者给出一个封闭的例子numpy.vectorize也不适用于

    def f2(a, parameters):
        b, c = parameters
        return a+b+c
    

    是否有可能在scipy/numpy中对这些函数进行矢量化?

    谢谢你的帮助! 亚力山大

    1 回复  |  直到 16 年前
        1
  •  2
  •   denis    16 年前

    对不起,我不知道是什么问题。蟒蛇 *args 收集任意数量的参数, 函数可以随意解包;参见 docs.python.org/tutorial/...

    import numpy as np
    from scipy.integrate import quad
    
    def f2( a, *args ):
        print "args:", args
        return a + np.sum( args, axis=0 )
    
    x = np.ones(3)
    print f2( x, x*2, x*3 )
    
    
    def quadf( *args ):
        print "quadf args:", args
        return 1
    
    quad( quadf, 0, 1, (2,3) )