pythonmatlab数据_用Python读写数据(Matlab用户)

我正在尝试从Matlab中学习Python,所以,从小的方面开始,我在研究读写数据。我被Matlab优秀的自包含文档给宠坏了,我很难在Python中找到最好的方法,因为在Matlab中主要是通过fopen、textscan、fgetl、regexp和fprintf实现的。我见过一些律师numpy.loadtxt文件(&savetxt)而其他人则主张使用“with open(…)as f:for line…”方法——在这种情况下,我可能需要使用后者来读取一列字符串头,后面跟着一个大小未知的浮点数矩阵。我把Matlab的示例代码放在一起:读取要读取的文件的路径和名称,如文本文件中所述,并将它们组合成单个字符串

从1开始确定文件中的标头数,以及标头下方逗号分隔的浮动数据矩阵的大小

从1读取文件中的头和矩阵,并将其分隔为两个变量

将标题和矩阵写入另一个文件

其中的一些步骤,例如2-3,可以在实践中结合起来,但在这里将它们分开将有助于我完成一些不同的任务。这可能更像是一个“请与我分享这个通用任务的Python最佳编码实践”,而不是一个非常具体的问题,但我希望这对其他新的Python用户也有用。感谢您提供任何特定的Python代码和/或引用。在%%

function ReadWrite()

tic

f=readPaths();

[t,n]=pullSize(f);

[hdr,d]=readData(f,t,n);

writeData(hdr,d);

toc

end

%%

function f=readPaths

fid=fopen('Paths.txt','r');

f=textscan(fid,'%s%s','delimiter','\t','headerlines',1);

fclose(fid);

f=char(fullfile(f{1},f{2}));

end

%%

function [t,n]=pullSize(f)

n=0;

fid=fopen(f,'r');

l=fgetl(fid);

h=isempty(regexp(l,',','once')); % headers are not comma delimited

while h

n=n+1;

l=fgetl(fid);

h=isempty(regexp(l,',','once'));

end

fclose(fid);

t=length(regexp(l,','))+1; % file is comma delimited

end

%%

function [hdr,d]=readData(f,t,n)

fid=fopen(f,'r');

hdr=textscan(fid,'%s',n);

d=textscan(fid,repmat('%f',1,t),'delimiter',',');

fclose(fid);

d=[d{:}];

hdr=[hdr{:}];

end

%%

function writeData(hdr,d)

fid=fopen('DataTest.csv','w');

for i=1:length(hdr)

fprintf(fid,'%s\n',hdr{i});

end

fprintf(fid,[repmat('%.4f,',1,size(d,2)-1),'%.4f\n'],d');

fclose(fid);

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值