Оценка массива функции Python 3 - PullRequest
0 голосов
/ 08 января 2019

Мне нужно интегрировать матричную функцию, как в примере ниже:

def func(a1, a2, a3):
     return np.array([a1, (a1 + a2), a3])

Неэффективный способ сделать это - использовать три цикла for. Хотя я бы хотел сделать его более эффективным. Я думал об использовании "карты", как:

def integral(func, a1, a2, a3, w):
    f = np.array(list(map(func, a1, a2, a3)))
    I = np.zeros((3, ))
    for fi, wi in zip(f, w):
        I = I + wi*np.array(fi)
    return I

a1, a2, a3 и w - это массивы одинакового размера (a - это точки выборки, а w - веса)

Это самый оптимизированный способ сделать это?

1 Ответ

0 голосов
/ 08 января 2019

В частности, для этой функции вы можете векторизовать все.

I = w@np.vstack([a1,a1+a2,a3]).T

Однако в общем случае не позволяет быстро применить функцию python к массиву с пустым массивом .

...