2010-07-30 5 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

Смежные вопросы