首页 > 解决方案 > 将大矩阵拆分为多个较小的矩阵 - 困难

问题描述

我有一个 32*32 矩阵,我想把它分成 4 个 8x8 矩阵。

以下是我如何尝试为大矩阵的左上部分制作一个较小的矩阵(pix是一个 32x32 矩阵)。

   A = [[0]*mat_size]*mat_size

   for i in range(mat_ size):
        for j in range(mat_size):
            A[i][j] = pix[i, j]

因此,pix具有以下左上部分的值:

198 197 194 194 197 192 189 196
199 199 198 198 199 195 195 145
200 200 201 200 200 204 131  18
201 201 199 201 203 192  57  56
201 200 198 200 207 171  41 141
200 200 198 199 208 160  38 146
198 198 198 198 206 157  39 129
198 197 197 199 209 157  38  77

但是当我print(A)在循环之后,A 的所有行都等于pix的最后一行。所以198 197 197 199 209 157 38 77我知道我可以使用8 行A = pix[:8, :8],但我更喜欢出于某种目的使用循环。我想知道为什么那个循环解决方案没有给我正确的结果。

标签: python

解决方案


A = np.zeros((4, 4, 8, 8))

for i in range(4):
    for j in range(4):
        A[i, j] = pix[i*8:(i+1)*8, j*8:(j+1)*8]

如果我正确理解您的问题,则此解决方案应该有效。它所做的是遍历像素矩阵,每次选择一个 8*8 矩阵。这是你需要的吗?


推荐阅读