Matlab>Python。从dis读取异构1D二进制数组

2024-04-27 04:13:55 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我们有一个简单的小文件,它有一个1D数组,它有一个特定的结构(第一项是MATLABuint,第二项是MATLABuint,其余的值是float

如何从Python中的文件中读取这种异构类型的数组?在

下面是MATLAB中的等效代码。在

function M = load_float_matrix(fileName)

fid = fopen(fileName);
if fid < 0
    error(['Error during opening the file ' fileName]);
end

rows = fread(fid, 1, 'uint');
cols = fread(fid, 1, 'uint');
data = fread(fid, inf, 'float');

M = reshape(data, [cols rows])';

fclose(fid);

end

注意:this thread描述了以下读取三个连续uint32值的方法:

^{pr2}$

但是,我怎么知道L是uint32的类型码呢?其他类型的呢?(例如float)。在

另外,如何从f读取连续值?a.fromfile是否会向前移动文件中的读取指针?在


Tags: 文件类型data数组floatfilename结构rows
1条回答
网友
1楼 · 发布于 2024-04-27 04:13:55

试试纽比。在

下面是一种方法。在

import numpy as np
f = open(filename,"r")
N = np.fromfile(fp,dtype=np.int32,count=2)
a = np.fromfile(fp,dtype=np.float64)
a = np.resize(a,N)

你也可以读取一个混合格式/类型(文本+二进制)文件。通过正确格式化dtype选项,可以合并第3行和第4行,更多示例请使用google。在

相关问题 更多 >