如何在numpy中对具有多个参数的函数进行向量化?

3 投票
1 回答
3786 浏览
提问于 2025-04-16 02:06

我正在尝试使用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 个回答

2

抱歉,我不太明白这个问题是什么。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) )

撰写回答