【问题标题】:How can I vectorize a function in numpy with multiple arguments?如何使用多个参数对 numpy 中的函数进行矢量化?
【发布时间】:2010-07-30 23:14:53
【问题描述】:

我正在尝试使用 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 中对这些函数进行矢量化处理?

感谢您的帮助! 亚历山大

【问题讨论】:

    标签: python numpy scipy


    【解决方案1】:

    抱歉,我不确定问题是什么。 Python *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) )
    

    【讨论】:

    • 谢谢。这几乎就是我想要的。虽然 numpy.vectorize 不适用于我的带有 *args 的函数,但如果我告诉它函数的输入参数的数量,numpy.frompyfunc 会接受它。
    猜你喜欢
    • 1970-01-01
    • 2022-01-08
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    相关资源
    最近更新 更多