将numpy数组堆叠到diagon上

2024-09-30 01:18:45 发布

您现在位置:Python中文网/ 问答频道 /正文

给定n2dnumpy数组,有没有一种简单的方法可以让我在对角线上将它们“堆叠”或“栓接”在一起,用0填充任何新的插槽?E、 g.给定:

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

arr2 = np.array([[9, 8, 7],
                 [6, 5, 4],
                 [3, 2, 1]])

我想创造:

^{pr2}$

Tags: 方法np数组array插槽对角线上将pr2
3条回答

我刚找到一个似乎正符合我需要的东西:

https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.linalg.block_diag.html

>> from scipy.linalg import block_diag
>>> A = [[1, 0],
...      [0, 1]]
>>> B = [[3, 4, 5],
...      [6, 7, 8]]
>>> C = [[7]]
>>> block_diag(A, B, C)
[[1 0 0 0 0 0]
 [0 1 0 0 0 0]
 [0 0 3 4 5 0]
 [0 0 6 7 8 0]
 [0 0 0 0 0 7]]

尝试:

>>> arr = np.zeros((5, 5))
>>> arr[:2, :2] = arr1
>>> arr[2:, 2:] = arr2

为了验证它是否有效,我们可以显示arr

^{pr2}$

There's a function for that.

scipy.linalg.block_diag(arr1, arr2)

它需要任意多个参数:

^{pr2}$

相关问题 更多 >

    热门问题