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