[英]Read numeric data from binary file using python
我想讀取一個二進制數據文件,其中包含標題部分(文本),然后是數字數組。 我可以使用f.read(block_size)在標題部分保持流式傳輸,但讀取數值數組的最佳方法是什么?
在MatLab,我能做到
fid = fopen(data_file_name, 'rb');
line = fread(fid, block_size, '*char');
data = fread(fid, 'long');
在Python中,我所做的是
f = open(data_file_name, 'rb')
header = f.read(block_size)
從這里我不知道如何到達數字數組。
您可以使用struct.unpack
來解壓縮數字數據。
例如
with open('file','rb') as fin:
header = fin.read(header_size)
data_str = fin.read(num_data_bytes)
data_tuple = struct.unpack('100f',data_str) #100 4-byte floats
根據數據,您可以使用numpy.fromfile
其直接讀取到numpy數組。 該函數接受一個打開的文件對象,因此您可以讀取標題然后傳遞打開的文件對象,因此numpy可以讀取數據。 在這個問題中 ,我詢問了將字符串中的二進制數據讀入numpy數組的詳細信息。 這是一個稍微不同的問題,但是大部分答案也適用於此(如何指定字節順序等)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.