相关疑难解决方法(0)

python/numpy中的线性组合

问候,

我不确定这是不是一个愚蠢的问题.

假设我有3个numpy数组,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
Run Code Online (Sandbox Code Playgroud)

还是比这更聪明?在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;        
}
Run Code Online (Sandbox Code Playgroud)

然后将其专门用于各种类型,

例如,对于数组代码看起来像

for (int i=0; i<L0.length; i++)
    R.array[i] =
    L0.array[i]*C0 +
    L1.array[i]*C1 +
    L2.array[i]*C2;
Run Code Online (Sandbox Code Playgroud)

从而避免必须创建新的中间阵列.

这可能看起来很乱,但效果确实很好.

我可以在python中做类似的事情,但我不确定它是否是必需的.

提前感谢您的任何见解.-缺口

python arrays numpy linear-algebra

2
推荐指数
1
解决办法
5566
查看次数

标签 统计

arrays ×1

linear-algebra ×1

numpy ×1

python ×1