如何从 Python 中的 .dat 文件读取浮点数数组?
How to read an array of floats from .dat file in Python?
我有包含这种类型文本的 .dat 文件
示例:
АqMA ЅA Д‰ї HB HB MA @ЅA Е€ї HB HB ДXLA ДЅA U‡ї HB HB АFA U5ЅA Е€ї HB HB @ю@A ЅA ё€ї HB HB [VA ЅA ±“‡ї HB HB @3MA ЅA U=‰ї HB HB А KA «JЅA  ї HB HB •dJA ;1ЅA р‡ї HB HB АZA «jЅA `†ї HB HB АFA ±ЅA Ue†ї HB HB А¬XA IVA bЗ€ї HB HB АHA OlЅA «2€І HB HB А5WA UЅA vB‰І HB HB АN>A ЅA Uu€ц HB HB >FA UuІA ЫІІ HB HB А^A ±ЅA «2€І HB HB А"\A UuЅA OL €ї HB HB вЂÓOA OlЅA р‡ї HB HB @аEA UЅA  ї HB HB @QHA OlЅA р‡ї HB HB АeOA ЅA vB‰ї HB HB цQA ЕНЅA ј‰ї HB HB @QHA  ЂЂ ї HB HB ,IA – A – HB HB @эUA «*ЅA Д‰ї HB HB DEA ЕНЅA Д‰ї HB HB вЂѐTA ДЅA Д‰ї HB HB АоMA ДЅA «ъ€ї HB HB @ TA ДЅA Д‰ї HB HB А0CA ДЅA ДД‰A ÀKHB HB HB HB - Xa - їїїhb hb hb hb hb hb hb hb hb hb hb hb hb @жda; 1 sisa - hb hb hb hb hb hb iya - Щ ЅA Д‰ї HB HB OA UuЅA Д‰ї HB HB @WGA 等...
它应该是具有正确浮点数的矩阵 (..., 10),但不知道该怎么做。我试图找到它是什么样的记录,但我找不到任何相同的东西:(
请帮忙
ps
在 matlab 中它神奇地工作得很好,但我真的不能在 Python
中做同样的事情
FileID = fopen('sample.dat' ,'r');
Data = fread(FileID,[10,inf],'float')';
数据只是一堆由实际二进制数据而不是文本表示的浮点数。 Numpy 可能是最快和最简单的方法:
numpy.fromfile(filepath, dtype=float).reshape([-1,10])
学习如何使用 struct
库表示二进制数据可能是一个很好的练习。这是一个尝试通读的快速示例:
with open(filepath, 'rb') as datafile:
my_array = list()
for i, value in enumerate(struct.iter_unpack('f', datafile)):
if i%10 == 0: #start a new row every 10 columns
my_array.append(list())
my_array[-1].append(value)
我有包含这种类型文本的 .dat 文件
示例: АqMA ЅA Д‰ї HB HB MA @ЅA Е€ї HB HB ДXLA ДЅA U‡ї HB HB АFA U5ЅA Е€ї HB HB @ю@A ЅA ё€ї HB HB [VA ЅA ±“‡ї HB HB @3MA ЅA U=‰ї HB HB А KA «JЅA  ї HB HB •dJA ;1ЅA р‡ї HB HB АZA «jЅA `†ї HB HB АFA ±ЅA Ue†ї HB HB А¬XA IVA bЗ€ї HB HB АHA OlЅA «2€І HB HB А5WA UЅA vB‰І HB HB АN>A ЅA Uu€ц HB HB >FA UuІA ЫІІ HB HB А^A ±ЅA «2€І HB HB А"\A UuЅA OL €ї HB HB вЂÓOA OlЅA р‡ї HB HB @аEA UЅA  ї HB HB @QHA OlЅA р‡ї HB HB АeOA ЅA vB‰ї HB HB цQA ЕНЅA ј‰ї HB HB @QHA  ЂЂ ї HB HB ,IA – A – HB HB @эUA «*ЅA Д‰ї HB HB DEA ЕНЅA Д‰ї HB HB вЂѐTA ДЅA Д‰ї HB HB АоMA ДЅA «ъ€ї HB HB @ TA ДЅA Д‰ї HB HB А0CA ДЅA ДД‰A ÀKHB HB HB HB - Xa - їїїhb hb hb hb hb hb hb hb hb hb hb hb hb @жda; 1 sisa - hb hb hb hb hb hb iya - Щ ЅA Д‰ї HB HB OA UuЅA Д‰ї HB HB @WGA 等...
它应该是具有正确浮点数的矩阵 (..., 10),但不知道该怎么做。我试图找到它是什么样的记录,但我找不到任何相同的东西:(
请帮忙
ps
在 matlab 中它神奇地工作得很好,但我真的不能在 Python
中做同样的事情FileID = fopen('sample.dat' ,'r');
Data = fread(FileID,[10,inf],'float')';
数据只是一堆由实际二进制数据而不是文本表示的浮点数。 Numpy 可能是最快和最简单的方法:
numpy.fromfile(filepath, dtype=float).reshape([-1,10])
学习如何使用 struct
库表示二进制数据可能是一个很好的练习。这是一个尝试通读的快速示例:
with open(filepath, 'rb') as datafile:
my_array = list()
for i, value in enumerate(struct.iter_unpack('f', datafile)):
if i%10 == 0: #start a new row every 10 columns
my_array.append(list())
my_array[-1].append(value)