使用 linalg.block_diag 可变数量的块

Using linalg.block_diag for variable number of blocks

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

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)