将numpy数组堆叠到对角线上

nic*_*556 3 python numpy linear-algebra

给定N 2d numpy数组,是否有一种简洁的方法可以在对角线上"堆叠"或"绑定"它们,用0填充任何新的插槽?例如给出:

arr1 = np.array([[1, 2],
                 [3, 4]])

arr2 = np.array([[9, 8, 7],
                 [6, 5, 4],
                 [3, 2, 1]])
Run Code Online (Sandbox Code Playgroud)

我想创建:

arr = np.array([[1, 2, 0, 0, 0],
                [3, 4, 0, 0, 0], 
                [0, 0, 9, 8, 7],
                [0, 0, 6, 5, 4],
                [0, 0, 3, 2, 1]])
Run Code Online (Sandbox Code Playgroud)

use*_*ica 5

有一个功能.

scipy.linalg.block_diag(arr1, arr2)
Run Code Online (Sandbox Code Playgroud)

它需要任意多个参数:

scipy.linalg.block_diag(*list_of_arrays)
Run Code Online (Sandbox Code Playgroud)