使用Python堆叠2D矩阵

时间:2015-02-03 12:55:47

标签: python-2.7 matrix reshape

我有一个脚本,将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可以完成这项工作,但我不知道如何将它包含在脚本中。

谢谢。

1 个答案:

答案 0 :(得分:0)

由于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循环快(1000倍)。