我正在尝试在 python 中的 for 循环中迭代创建 block 矩阵。有没有一种方法可以使用简单索引,其中索引对应于矩阵索引而不是标量索引。例如,将以下内容想象为 block 矩阵中的两个 2x2 矩阵:
4 5 6 7
1 2 3 4
有没有办法对子矩阵进行索引:
block_matrix[0,0] =
4 5
1 2
block_matrix[0,1] =
6 7
3 4
我的最终目标是有一个 for 循环来堆叠这些。例如:
for i in range(3):
for j in range(3):
mat = single_matrix
block_matrix[i,j] = mat
block_matrix =
matrix_1_1 matrix_1_2 matrix_1_3
matrix_2_1 matrix_2_2 matrix_2_3
matrix_3_1 matrix_3_2 matrix_3_3
最佳答案
使用 numpy
和 slicing将是一种好方法。
import numpy as np
block_matrix = np.zeros((9,9)) # shape (9,9)
mat = np.reshape(np.arange(9), (3,3)) # shape (3,3)
for i in range(3):
for j in range(3):
block_matrix[i*3:i*3+3,j*3:j*3+3] = mat
# block_matrix =
# mat mat mat
# mat mat mat
# mat mat mat
当然,我只是创建了一个形状为 (3,3) 的简单矩阵,并将其用于 block_matrix 的所有子部分,但我希望您能明白要点。
关于python - 如何使用python从 block 中索引整个矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58118451/