所以我有一个生成各种矩阵的代码。这些矩阵需要存储在块对角矩阵中。这应该很简单,因为我可以使用scipy的:

scipy.linalg.block_diag(*arrs)


但是我遇到的问题是我不知道需要像这样存储多少个矩阵。我想让事情尽可能简单(自然)。我想到做类似的事情:

scipy.linalg.block_diag( matrix_list[ii] for ii in  range(len(matrix_list)) )


但这是行不通的。我可以想到其他一些方法来实现此目的...但是对于我认为应该更简单的方法,它们都变得相当复杂。

是否有人有(或知道)一种简单的方法来执行此操作?

提前致谢!

最佳答案

当您这样做时:

scipy.linalg.block_diag( matrix_list[ii] for ii in  range(len(matrix_list)) )


您正在将生成器表达式传递给block_diag,这不是使用它的方式。

而是使用*运算符在函数调用中扩展参数列表,例如:

scipy.linalg.block_diag(*matrix_list)

关于python - 使用linalg.block_diag获取可变数量的块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28095803/

10-17 02:29