Python Numpy:从三维到二维
我有一个形状矩阵Python Numpy:从三维到二维,python,python-3.x,python-2.7,numpy,numpy-ndarray,Python,Python 3.x,Python 2.7,Numpy,Numpy Ndarray,我有一个形状矩阵[2000140190]。这里,2000是2D切片的数量,其中每个切片为[140190] 我想把这个3D矩阵转换成[7000,7600](提示:140*50=7000;190*40=7600;50*40=2000)。我想以行主要方式扩展矩阵。任何指针?如注释中所述,您可以np.重塑 m_2d = np.random.rand(7000, 7600) m_3d = m_2d.reshape([2000, 140, 190]) 如前所述,解决方案是重塑,如果需要行主键,则应根据文档
[2000140190]
。这里,2000是2D切片的数量,其中每个切片为[140190]
我想把这个3D矩阵转换成
[7000,7600]
(提示:140*50=7000
;190*40=7600
;50*40=2000
)。我想以行主要方式扩展矩阵。任何指针?如注释中所述,您可以np.重塑
m_2d = np.random.rand(7000, 7600)
m_3d = m_2d.reshape([2000, 140, 190])
如前所述,解决方案是重塑,如果需要行主键,则应根据文档将顺序设置为F:
m_2d = np.random.rand(7000, 7600)
m_3d = m_2d.reshape([2000, 140, 190],order='F')
听起来你也想要一个转置:
m_3d = np.random.rand(2000, 140, 190)
# break the 2000 dimension in two. Pick one:
m_4d = m_3d.reshape((50, 40, 140, 190))
# move the dimensions to collapse to be adjacent
# you might need to tweak this - you haven't given enough information to know
# what order you want
m_4d = m_4d.transpose((0, 2, 1, 3))
# collapse adjacent dimensions
m_2d = m_4d.reshape((7000, 7600))
有很多关于的文档,但是请注意,
40*50
是2000
,而不是200
。我的错。打字错误有太多的方式来解释这一点。你能解释一下m3d[i,j,k]
在m2d
中的结尾吗<代码>m2d[40*j+j%40,j//40+50*k]是许多选项之一。@Eric:是的,m3D映射到m2d。我有2D图像芯片(140X190),它们总共有2000个。从中提取这些芯片的图像的原始大小为(7000X7600),即,我在x方向提取50个芯片,在y方向提取40个芯片。现在,我想从这个3D矩阵重建完整的图像。