[英]Assembling matrices in python (scipy/numpy)
我想知道是否有一种简单的方法可以在python中沿对角线组装矩阵,如果它们重叠则添加值。 这是我从Matlab论坛上偷走的一个方便的图表: https : //i.stack.imgur.com/ZunrZ.jpg
目前,我正在尝试实现它以使用一定数量的2x2矩阵,但最终目标是使代码组装任意数量的任意大小的矩阵(所有相同大小的c。,最大4x4)。
我不确定如何对此进行矢量化,但你可以直接用setitem做到:
k = k1 = np.array([[1,2],[3,4]]) # etc
ks = [k1, k2, k3, k4]
[n] = set(k.shape)
N = len(ks)
A = np.zeros((N+1, N+1))
for i, k in enumerate(ks):
A[i:i+n, i:i+n] += k
首先在5x5大矩阵上有两个2x2矩阵的例子:
import numpy as np
M = np.zeros((5,5))
M1 = np.matrix([[1,2],[3,4]])
M2 = np.matrix([[1,2],[3,4]])
M[:2,:2] += M1
M[1:3, 1:3] += M2
M
产量
array([[ 1., 2., 0., 0., 0.],
[ 3., 5., 2., 0., 0.],
[ 0., 3., 4., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.]])
在一般情况下,如果你有零的KXK矩阵M
和K-R + 1点RXR matrices
在一些可转位,你可以做
for i in range(K-r+1):
M[i+r:i+r] += matrices[i]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.