Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用linalg.block_diag进行可变块数_Python_Numpy_Matrix_Scipy_Parameter Passing - Fatal编程技术网

Python 使用linalg.block_diag进行可变块数

Python 使用linalg.block_diag进行可变块数,python,numpy,matrix,scipy,parameter-passing,Python,Numpy,Matrix,Scipy,Parameter Passing,所以我有一个生成各种矩阵的代码。这些矩阵需要存储在块对角矩阵中。这应该相当简单,因为我可以使用scipy的: scipy.linalg.block_diag(*arrs) 然而,我的问题是,我不知道需要像这样存储多少个矩阵。我想让事情尽可能简单自然。我想做一些事情,比如: scipy.linalg.block_diag( matrix_list[ii] for ii in range(len(matrix_list)) ) 但这不起作用。我可以想出一些其他的方法。。。但它们都变得非常复杂,

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

相反,使用*Operator来扩展函数调用中的参数列表,如:

scipy.linalg.block_diag(*matrix_list)
当您这样做时:

scipy.linalg.block_diag( matrix_list[ii] for ii in  range(len(matrix_list)) )
将生成器表达式传递给block_diag,这不是使用它的方式

相反,使用*Operator来扩展函数调用中的参数列表,如:

scipy.linalg.block_diag(*matrix_list)

什么是矩阵列表?什么不起作用?您是否遇到了错误?*arrs只是在他们的帮助中使用的术语。a实际上是一个错误,意味着要键入matrix_列表。我将编辑帖子以更正此错误。matrix_list只是一个存储矩阵的列表,当您执行scipy.linalg.block_diag*matrix_list时会得到什么?ValueError:以下位置的参数的维数大于2:[0]如果我声明存储在矩阵列表中的矩阵,那就足够了。例如,假设我有:a,b,c->一些矩阵矩阵列表=[a,b,c]它对:scipy.linalg.block\u diaga,b,c很满意,但对scipy.linalg.block\u diagmetrix\u列表不满意,这是令人沮丧的,因为矩阵列表中的矩阵数量可能会根据初始条件而变化。再试一次,这次使用*what are a,arrs,矩阵表?什么不起作用?您是否遇到了错误?*arrs只是在他们的帮助中使用的术语。a实际上是一个错误,意味着要键入matrix_列表。我将编辑帖子以更正此错误。matrix_list只是一个存储矩阵的列表,当您执行scipy.linalg.block_diag*matrix_list时会得到什么?ValueError:以下位置的参数的维数大于2:[0]如果我声明存储在矩阵列表中的矩阵,那就足够了。例如,假设我有:a,b,c->一些矩阵矩阵列表=[a,b,c]它喜欢:scipy.linalg.block\u diaga,b,c,但它不喜欢scipy.linalg.block\u diagmatrix\u列表,这是令人沮丧的,因为矩阵列表中的矩阵数量可能会根据初始条件而变化。再试一次,这次使用*Oh,这就是为什么他们有一个*我以为这只是我现在觉得很傻!。太棒了,正是我需要的,非常感谢!哦,这就是为什么他们有一个*我以为这只是我现在觉得很傻!。太棒了,正是我需要的,非常感谢!