2015-01-22 11 views
1

그래서 다양한 행렬을 생성하는 코드가 있습니다. 이러한 행렬은 블록 대각 행렬에 저장해야합니다. 가변 개수의 블록에 linalg.block_diag 사용

scipy.linalg.block_diag(*arrs) 

내가 가지고있는 문제는 내가 필요로 얼마나 많은 행렬 몰라하지만

은 다음과 같이 저장 될 : 나는 scipy의를 사용할 수 있습니다 이것은 매우 간단해야한다. 나는 가능한 한 간단하게 (자연스럽게) 물건을 유지하고 싶다. 나는 다음과 같이 생각했다 :

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

그러나 이것은 작동하지 않는다. 나는 그것을 할 수있는 몇 가지 다른 방법을 생각할 수있다. 그러나 그들은 훨씬 더 단순해야한다고 생각되는 것들에 대해 상당히 뒤 엉킨다.

누군가가 이것을 수행하는 간단한 방법을 알고 있습니까? 사전에

감사합니다!

+0

'matrix_list'? 작동하지 않는 것은 무엇입니까? 오류가 있습니까? – shx2

+0

* arrs는 도움이되는 단지 terminlogy scipy 사용입니다. a는 실제로 실수입니다. matrix_list를 입력해야합니다 (이 문제를 해결하기 위해 게시물을 편집하러 갈 것입니다). matrix_list는 행렬이 저장되는 목록입니다. – Steve

+0

'scipy.linalg.block_diag (* matrix_list)'를하면 어떻게됩니까? – shx2

답변

2

당신이 할 경우 : 당신이 그것을 사용하는 방법은하지 않은, block_diag에 발전기 표현을 전달하는

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

.

가 대신 같은 함수 호출에 인수 목록을 확장 들어, * opertor을 사용`A`,`arrs`, 무엇

scipy.linalg.block_diag(*matrix_list) 
+0

오, 그게 그들이 * 형식이라고 생각했기 때문입니다. (어리석은 느낌입니다!) 그게 훌륭해, 정확히 내가 필요로했던 것, 너 정말 고마워! – Steve

관련 문제