Python 你会用numpy';将文件从文件存储到数据阵列中?

Python 你会用numpy';将文件从文件存储到数据阵列中?,python,arrays,file,numpy,io,Python,Arrays,File,Numpy,Io,我对python还是相当陌生的。我已经能够编写一个程序,从二进制文件中读取文件,并将其中的数据存储在几个数组中。现在,我已经能够用这个程序完成一些其他任务,我正试图回顾我的所有代码,看看哪里可以使它更高效,同时更好地学习Python。特别是,我正在尝试更新文件中数据的读取和存储。使用numpy的fromfile解包数据要比struct.unpack方法快得多,并且对于1D数组结构非常有效。但是,我有一些数据存储在2D数组中。我似乎被困在如何在2D阵列中实现相同类型的存储上。有没有人对我如何才能做

我对python还是相当陌生的。我已经能够编写一个程序,从二进制文件中读取文件,并将其中的数据存储在几个数组中。现在,我已经能够用这个程序完成一些其他任务,我正试图回顾我的所有代码,看看哪里可以使它更高效,同时更好地学习Python。特别是,我正在尝试更新文件中数据的读取和存储。使用
numpy
fromfile
解包数据要比
struct.unpack
方法快得多,并且对于1D数组结构非常有效。但是,我有一些数据存储在2D数组中。我似乎被困在如何在2D阵列中实现相同类型的存储上。有没有人对我如何才能做到这一点有任何想法或提示

我的基本程序结构如下:

from numpy import fromfile
import numpy as np


file = open(theFilePath,'rb')

####### File Header #########

reservedParse = 4
fileHeaderBytes = 4 + int(131072/reservedParse)  #Parsing out the bins in the file header
fileHeaderArray = np.zeros(fileHeaderBytes)
fileHeaderArray[0] = fromfile(file, dtype='<I', count=1) #File Index; 4 Bytes
fileHeaderArray[1] = fromfile(file, dtype='<I', count=1) #The Number of Packets; 4 bytes
fileHeaderArray[2] = fromfile(file, dtype='<Q', count=1) #Timestamp; 16 bytes; 2, 8-byte.
fileHeaderArray[3] = fromfile(file, dtype='<Q', count=1)
fileHeaderArray[4:] = fromfile(file, dtype='<I', count=int(131072/reservedParse)) #Empty header space

####### Data Packets #########
#Note: Each packet begins with a header containing information about the data stream followed by the data.

packets = int(fileHeaderArray[1])  #The number of packets in the data stream
dataLength = int(28672)

packHeader = np.zeros(14*packets).reshape((packets,14))
data       = np.zeros(dataLength*packets).reshape((packets,dataLength))


for i in range(packets):
    packHeader[i][0] = fromfile(file, dtype='>H', count=1)  #Model Num
    packHeader[i][1] = fromfile(file, dtype='>H', count=1)  #Packet ID
    packHeader[i][2] = fromfile(file, dtype='>I', count=1)  #Coarse Timestamp
    ....#Continuing on
    packHeader[i][13] = fromfile(file, dtype='>i', count=1) #4 bytes of reserved space
    data[i] = fromfile(file, dtype='<h', count=dataLength) #Actual data

如果需要任何澄清,请告诉我。

另一个选项是使用numpy.save和numpy.load来编写.npy文件。另一个选项是使用numpy.save和numpy.load来编写.npy文件。
packHeader = [[0 for x in range(14)] for y in range(packets)]
data = [[0 for x in range(dataLength)] for y in range(packets)]

for i in range(packets):
    packHeader[i][0] = unpack('>H', file.read(2))  #Model Num
    packHeader[i][1] = unpack('>H', file.read(2))  #Packet ID
    packHeader[i][2] = unpack('>I', file.read(4))  #Coarse Timestamp
    ....#Continuing on
    packHeader[i][13] = unpack('>i', file.read(4)) #4 bytes of reserved space
    packHeader[i]=list(chain(*packHeader[i]))   #Deals with the tuple issue ((x,),(y,),...) -> (x,y,...)

    data[i] = [unpack('<h', file.read(2))  for j in range(dataLength)] #Actual data 
    data[i] = list(chain(*data[i])) #Deals with the tuple issue ((x,),(y,),...) -> (x,y,...)