使用 Python 堆叠二维矩阵

stacking 2D matrix using Python

我有一个脚本可以将 1024x1024 矩阵重塑为 32x32 矩阵。这是代码:

import numpy as np


filename = r'bb1e03'                    
background = r'bb1e03_background'               

size = 1024
resize = 32

n = np.arange(size)
T0 = np.loadtxt(filename, unpack=False)
bg = np.loadtxt(background, unpack=False)

T = T0-bg                                               

for s in n: # s here is the row number
    B = np.reshape(T[s], (resize, resize))
    B_rev = B[...,::-1]                                                                 
    name = str(filename) + '_column_'+ str.zfill(str(s), 4)   
    np.savetxt(name+'.txt', B_rev)

现在我需要堆叠所有 32x32 矩阵,以便最终得到一个 32x32x1024 矩阵。你能告诉我我该怎么做吗?我发现 np.dstack 可以完成这项工作,但我不知道如何将它包含在脚本中。

谢谢。

由于 np.dstack 需要所有矩阵的元组来堆叠,所以无论如何都必须单独存储它们。

解决您的问题的一个简单方法是在生成重塑矩阵时将它们放置在堆叠结构中。

stacked = np.empty((32, 32, 1024))
for s in xrange(1024):
    B = T[s].reshape((32, 32))
    B_rev = B[..., ::-1]
    stacked[...,s] = B_rev

您也可以使用一个衬垫一步完成此操作

stacked = T.reshape((1024,32,32)).transpose((1,2,0))[:,::-1]

这种方法应该是首选,因为在一些简短的基准测试中我发现它比普通的 python 循环快 很多 (1000x)。