【发布时间】:2019-04-26 21:41:38
【问题描述】:
Numpy 提供了一种使用偏移量从单个元素创建对角矩阵的方法。现在,我有一个 2*2 块的列表,而不是单个元素,可以沿着具有指定偏移量的对角线插入。 下面是 11 个 2*2 数组块,它们应该适合 24*24 矩阵的 +1 偏移量。我知道 scipy.linalg.block_diag 可以为(隐式)零偏移创建块对角线。
一般来说,我有一个 2*2 块数组的列表,我想沿着 2*2 块对角线的指定偏移量插入这些块
[array([[ 1, 8],[ 5, 40]]), array([[ 2, 7],[10, 35]]), array([[0, 0], [0, 0]]), array([[ 3, 6],[15, 30]]), array([[ 4, 5],[20, 25]]),array([[0, 0],[0, 0]]), array([[ 5, 4],[25, 20]]), array([[ 6, 3],[30, 15]]), array([[0, 0],[0, 0]]), array([[ 7, 2],[35, 10]]), array([[ 8, 1], [40, 5]])]
【问题讨论】:
-
所有
block_diag所做的只是遍历块并插入到正确的切片中,out[r:r + rr, c:c + cc] = arrs[i]。这里没有神奇的编译代码。只是简单的迭代和索引。
标签: numpy