你可以使用numpy的fromfile来存储ndarray中的文件吗?

时间:2016-06-29 18:33:12

标签: python arrays file numpy io

我仍然是python的新手。我已经能够编写一个程序,它将从二进制文件中读取一个文件并将数据存储在几个数组中。现在我已经能够完成这个程序的其他一些任务,我正在尝试回顾我的所有代码,看看我可以在哪里提高效率,在此过程中更好地学习Python。特别是,我正在尝试更新从文件中读取和存储数据。使用numpy的{​​{1}}在解包数据方面比fromfile方法快得多,并且对于一维数组结构非常有用。但是,我有一些数据存储在2D数组中。我似乎坚持如何在2D阵列中实现相同类型的存储。有没有人对我如何能够执行此操作有任何想法或提示?

我的基本程序结构如下:

struct.unpack

基本上这就是我现在所拥有的。有没有办法我可以做到这一点而不做循环?经历那个循环似乎并不特别快或者是numpy-ish。

作为参考,使用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 而不是unpack的for循环结构是:

numpy

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

0 个答案:

没有答案