在 scipy 中将重叠数组拼接在一起

问题描述 投票:0回答:0

给定两个 numpy 数组(矩阵)

A = np.linspace(1,9,9).reshape(3,3)
B = np.linspace(10,18,9).reshape(3,3)

我们可以通过以下方式将它们组合成块对角矩阵:

from scipy.linalg import block_diag
block_diag(A,B)
array([[ 1.,  2.,  3.,  0.,  0.,  0.],
       [ 4.,  5.,  6.,  0.,  0.,  0.],
       [ 7.,  8.,  9.,  0.,  0.,  0.],
       [ 0.,  0.,  0., 10., 11., 12.],
       [ 0.,  0.,  0., 13., 14., 15.],
       [ 0.,  0.,  0., 16., 17., 18.]])

我想知道是否有一种直接的方法来定义 A 和 B 的以下“重叠”类型矩阵:

array([[ 1.,      2.,         3.,       0.],
       [ 4.,  (10.+5.)/2,  (6.+11.)/2,  12.],
       [ 7.,  (13.+8.)/2,  (14.+9.)/2,  15.],
       [ 0.,      16.,       17.,      18.]])

因此,我们不是将 A、B 放在对角线上,而是允许它们在一定程度上重叠,并对重叠中的元素进行平均。一般来说,我想指定重叠程度,因此在本例中重叠程度为 2。理想情况下我还希望保留稀疏结构,而不是构造整个数组。

python scipy sparse-matrix diagonal
© www.soinside.com 2019 - 2024. All rights reserved.