Предположим, у меня есть 1D Numpy массив t
(скажем, длины len_t
), содержащий значения, которые я хочу применить к определенному математическому преобразованию. Вдобавок предположим, что у меня есть 4 массива 1D Numpy a1
, k1
, k2
и d
, все одинаковой длины (скажем, len_p
). Математическое преобразование, которое я хочу применить к t
, включает все эти параметры. Поэтому я хочу получить массив Numpy формы (len_p, len_t)
, содержащий преобразованные значения t
, преобразованные с использованием каждого значения a1
, k1
, k2
и d
одно за другим. Для большей точности я хочу применить следующее преобразование: y = (a1*(t - d)*k1)/(k2+l1)*np.exp(l1*(t - d))
где l1
- простое число с плавающей запятой. Я не уточнял индексы, чтобы не перевесить обозначения. Если мое объяснение неясно, скажите, пожалуйста. Есть ли у кого-нибудь идеи, как мне действовать? Я не показываю больше кода, поскольку в будущем я перейду к другим аналогичным преобразованиям, и поэтому мне понадобится общий метод.
EDIT
В качестве примера скажем
t = [0 1 2]
и
a1 = [.5 .1]
k1 = [.01 .3]
k2 = [.7 .03]
d = [.2 .41]
l1 = 2
Я хочу получить двумерный массив, каждая строка которого содержит t
значений, преобразованных набором параметров, имеющих одинаковые индексы в a1
, k1
, k2
и d
. Следовательно, вывод будет
y = [[(a1[0]*(t[0] - d[0])*k1[0])/(k2[0]+l1)*np.exp(l1*(t[0] - d[0])) (a1[0]*(t[1] - d[0])*k1[0])/(k2[0]+l1)*np.exp(l1*(t[1] - d[0])) (a1[0]*(t[2] - d[0])*k1[0])/(k2[0]+l1)*np.exp(l1*(t[2] - d[0]))]
[(a1[1]*(t[0] - d[1])*k1[1])/(k2[1]+l1)*np.exp(l1*(t[0] - d[1])) (a1[1]*(t[1] - d[1])*k1[1])/(k2[1]+l1)*np.exp(l1*(t[1] - d[1])) (a1[1]*(t[2] - d[1])*k1[1])/(k2[1]+l1)*np.exp(l1*(t[2] - d[1]))]]
Итак, с числовыми значениями это идет
y = [[(.5*(0 - .2)*0.01)/(.7+2)*np.exp(2*(0 - .2)) (.5*(1 - .2)*0.01)/(.7+2)*np.exp(2*(1 - .2)) (.5*(2 - .2)*0.01)/(.7+2)*np.exp(2*(2 - .2))]
[(.1*(0 - .41)*.3)/(.03+2)*np.exp(2*(0 - .41)) ((.1*(1 - .41)*.3)/(.03+2)*np.exp(2*(1 - .41)) (.1*(2 - .41)*.3)/(.03+2)*np.exp(2*(2 - .41))]]