привет
Я не уверен, тупой ли это вопрос или нет.
Допустим, у меня есть 3 массива, A1, A2, A3 и 3 числа с плавающей точкой, c1, c2, c3
и я бы хотел оценить B = A1 * c1 + A2 * c2 + A3 * c3
будет вычислять numpy как, например,
E1 = A1*c1
E2 = A2*c2
E3 = A3*c3
D1 = E1+E2
B = D1+E3
или это умнее? В C ++ у меня был отличный способ абстрагировать этот вид операции.
Я определил ряд общих шаблонных функций 'LC', LC для линейной комбинации, например:
template<class T,class D>
void LC( T & R,
T & L0,D C0,
T & L1,D C1,
T & L2,D C2)
{
R = L0*C0
+L1*C1
+L2*C2;
}
и затем специализировал это для различных типов,
так, например, для массива код выглядел как
for (int i=0; i<L0.length; i++)
R.array[i] =
L0.array[i]*C0 +
L1.array[i]*C1 +
L2.array[i]*C2;
, таким образом, избегая необходимости создавать новые промежуточные массивы.
Это может выглядеть грязно, но сработало очень хорошо.
Я мог бы сделать что-то подобное в python, но я не уверен, что это необходимо.
Заранее спасибо за понимание.
-nick