block_diagonal_matrix

import numpy as np 
from scipy.sparse import csr_matrix, block_diag

def main():
    a = np.array([[1,1,0],[1,2,0],[3,0,4]])
    z = np.zeros*1
    b = np.array([[1,11,0],[1,21,0],[33,0,0]])
    mat_array = (a for i in range(10))
    c_sp = block_diag(mat_array).toarray()
    print(c_sp)
    
main()

 

 

scipy.sparceのblock_diagを使えば、行列をブロックとして扱い、それを対角方向に並べた疎行列を作ることが出来る。これが、大規模行列計算に役に立つとか。

 

詳しいdocumentはこちらを参照。

*1:3,3