所以我有一个生成各种矩阵的代码。这些矩阵需要存储在块对角矩阵中。这应该是相当简单的,因为我可以使用scipy的:
scipy.linalg.block_diag(*arrs)
然而我遇到的问题是我不知道需要存储多少个矩阵。我希望尽可能简单地保持事物(自然)。我想做类似的事情:
scipy.linalg.block_diag( matrix_list[ii] for ii in range(len(matrix_list)) )
但这不起作用。我可以想到其他一些方法来做到这一点......但是对于我认为应该更简单的事情,它们都变得非常复杂。
有没有人有想法(或知道)一种简单的方法来实现这一目标?
提前致谢!
答案 0 :(得分:3)
当你这样做时:
scipy.linalg.block_diag( matrix_list[ii] for ii in range(len(matrix_list)) )
您将生成器表达式传递给block_diag
,这不是使用它的方式。
相反,使用*
opertor来扩展函数调用中的参数列表,如:
scipy.linalg.block_diag(*matrix_list)