通过指定非对角线块构造矩阵

时间:2019-10-02 11:26:01

标签: python numpy scipy

我需要从指定非对角线块的矩阵列表中构建一个矩阵,理想情况下是稀疏矩阵。

我知道bmat,但这需要一个人知道有多少个矩阵。我想知道是否有scipy.sparse.block_diag(list_of_mats,-1)的等价物吗?

该函数应该能够处理非平方矩阵(否则我可以只填充block_diag(list_of_mats)的输出)。例如,输入([[1,2]], [[3]])应该返回[[0,0,0,0],[0,0,0,0],[1,2,0,0],[0,0,3,0]]

例如,在Mathematica中,我可以指定矩阵矩阵并使用ArrayFlatten

说明澄清 是的,len(list_of_mats)确实给出了矩阵的数量,但是随后我将不得不动态构造[[None, ..., None], [A1, None, ...], [None, A2, None, ...], ...]来将bmat应用于矩阵,而我不知道该怎么做({{ 1}}等是A1的元素。我认为这也回答了另一个问题。映射的工作方式是:首先在(例如)对角线上写list_of_mats的矩阵(矩阵),然后将其展平以使其成为普通矩阵。与块对角线矩阵不同,列表中的矩阵不必一定要平方才能起作用,这就是我想在示例中说明的。我认为这张地图是独一无二的。我不认为numpy.tri在这里有帮助(也不稀疏)。

0 个答案:

没有答案