2010-07-30 69 views
3

我正在嘗試使用Scipy對給定函數進行擬合。 Scipy.optimize.leastsq需要一個矢量化函數作爲輸入參數之一。 這一切工作正常,但現在我有一個更復雜的功能,這是不是由Scipy/Numpy自動矢量化。我如何使用多個參數在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的這些功能可能工作?

謝謝你的幫助! Alexander

回答

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)) 
+0

謝謝。這幾乎是我所期待的。雖然numpy.vectorize不能在我的函數中使用* args,但是如果我告訴它函數的輸入參數的數量,numpy.frompyfunc會接受它。 – Alexander 2010-08-02 13:50:42

相關問題