Как я могу векторизовать функцию в NumPy с несколькими аргументами? - PullRequest
3 голосов
/ 31 июля 2010

Я пытаюсь подобрать данную функцию с помощью 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 голосов
/ 01 августа 2010

Извините, я не уверен, в чем вопрос. Python *args собирает любое количество аргументов, какую функцию можно распаковать по своему усмотрению; увидеть docs.python.org / учебник /...

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) )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...