Arrays Numpy:沿一个轴按展平顺序进行三维到二维maxtrix重塑

Arrays Numpy:沿一个轴按展平顺序进行三维到二维maxtrix重塑,arrays,numpy,reshape,Arrays,Numpy,Reshape,我想从磁盘中读取非常大的二进制文件(GB+),并对其进行整形以进行进一步处理。数据的结构是这样的:有F帧,每个帧由长度为N的B块组成,而N是一个数字。我用np.fromfile读取数据,得到一个1D np.array。我想以一种使数据成形(F*N,B)的方式重塑数据,这样我就可以轻松地对块进行操作。 我有一种方法可以实现我想要的——但它使用for循环并构建一个新数组(因此效率不高): 我不能通过直接的整形变换来实现展平顺序(np.ravel()保持顺序),但我想有一种有效的/基本的numpy方法

我想从磁盘中读取非常大的二进制文件(GB+),并对其进行整形以进行进一步处理。数据的结构是这样的:有F帧,每个帧由长度为N的B块组成,而N是一个数字。我用np.fromfile读取数据,得到一个1D np.array。我想以一种使数据成形(F*N,B)的方式重塑数据,这样我就可以轻松地对块进行操作。 我有一种方法可以实现我想要的——但它使用for循环并构建一个新数组(因此效率不高):


我不能通过直接的整形变换来实现展平顺序(np.ravel()保持顺序),但我想有一种有效的/基本的numpy方法来实现它。

基本上,您希望将一个形状数组
(F,B,N)
转换为一个形状数组
(F,N,B)
。这可以通过Numpy的
transpose()
函数轻松实现,该函数允许aribtrary索引排列。如果要合并前两个维度,然后合并在一起,可以应用适当的重塑:

import numpy as np
F,B,N= 2,2,2
Data3D = np.arange(F*B*N).reshape(F,B,N)
Data2D = np.transpose(Data3D, (0, 2, 1)).reshape(F * N, B)

基本上,您希望将形状数组
(F,B,N)
转换为形状数组
(F,N,B)
。这可以通过Numpy的
transpose()
函数轻松实现,该函数允许aribtrary索引排列。如果要合并前两个维度,然后合并在一起,可以应用适当的重塑:

import numpy as np
F,B,N= 2,2,2
Data3D = np.arange(F*B*N).reshape(F,B,N)
Data2D = np.transpose(Data3D, (0, 2, 1)).reshape(F * N, B)

基本上,您希望将形状数组
(F,B,N)
转换为形状数组
(F,N,B)
。这可以通过Numpy的
transpose()
函数轻松实现,该函数允许aribtrary索引排列。如果要合并前两个维度,然后合并在一起,可以应用适当的重塑:

import numpy as np
F,B,N= 2,2,2
Data3D = np.arange(F*B*N).reshape(F,B,N)
Data2D = np.transpose(Data3D, (0, 2, 1)).reshape(F * N, B)

基本上,您希望将形状数组
(F,B,N)
转换为形状数组
(F,N,B)
。这可以通过Numpy的
transpose()
函数轻松实现,该函数允许aribtrary索引排列。如果要合并前两个维度,然后合并在一起,可以应用适当的重塑:

import numpy as np
F,B,N= 2,2,2
Data3D = np.arange(F*B*N).reshape(F,B,N)
Data2D = np.transpose(Data3D, (0, 2, 1)).reshape(F * N, B)

正是我要找的!谢谢正是我要找的!谢谢正是我要找的!谢谢正是我要找的!谢谢