Массив из функции с двумя переменными, усредненный по одной переменной без цикла for - PullRequest
0 голосов
/ 19 марта 2020

У меня есть два numpy массива t и f. Теперь я хочу создать третий массив N согласно некоторой математической формуле, которая принимает два параметра (t и f). Я хочу, чтобы он имел ту же форму, что и f, усредняя значения N для каждого f по всем t, как это сделано ниже.

import numpy as np

t = np.linspace(0,4,100)
f = np.linspace(10,15,50)

N = np.zeros(len(f))

for i in range(len(f)):
   eq = np.sin(t)*np.exp(t*f[i])
   N[i] = np.mean(eq)

Как я продемонстрировал, это легко сделать с помощью for л oop. Однако я хочу улучшить время вычислений, убрав это значение для l oop. Есть ли эффективный способ сделать это?

1 Ответ

1 голос
/ 19 марта 2020

Да. Вы можете пропустить l oop и выполнить операцию в одной строке, если сделаете небольшую векторизацию.

t,f = t.reshape(-1,1), f = f.reshape(-1,1) #Reshape for matrix multiplication
N = (np.sin(t)*np.exp(t*f.T)).mean(axis = 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...