小编ber*_*ian的帖子

从 numpy 数组中提取对角线块

我正在寻找一种巧妙的方法来提取大小为 2x2 的对角块,它们位于 (2N)x(2N) numpy 数组的主对角线上(也就是说,会有 N 个这样的块)。这概括了 numpy.diag,它沿主对角线返回元素,人们可能会将其视为 1x1 块(当然 numpy 不会以这种方式表示它们)。

更广泛地说,人们可能希望从 (MN)x(MN) 数组中提取 N MxM 个块。这似乎是 scipy.linalg.block_diag 的补充,在How can I transform blocks into a blockdiagonal matrix (NumPy) 中进行了巧妙的讨论,将块从 block_diag 将放置它们的位置拉出。

该问题的解决方案中借用代码,这是如何设置的:

>>> a1 = np.array([[1,1,1],[1,1,1],[1,1,1]])
>>> a2 = np.array([[2,2,2],[2,2,2],[2,2,2]])
>>> a3 = np.array([[3,3,3],[3,3,3],[3,3,3]])
>>> import scipy.linalg
>>> scipy.linalg.block_diag(a1, a2, a3)
array([[1, 1, 1, 0, 0, 0, 0, 0, 0],
       [1, 1, 1, 0, 0, 0, 0, 0, 0],
       [1, 1, 1, 0, 0, …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy

6
推荐指数
1
解决办法
5274
查看次数

标签 统计

numpy ×1

python ×1

scipy ×1