使用 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)
所以我有一个生成各种矩阵的代码。这些矩阵需要存储在块对角矩阵中。这应该相当简单,因为我可以使用 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)