为了账号安全,请及时绑定邮箱和手机立即绑定

numpy loadtxt跳过第一行

numpy loadtxt跳过第一行

倚天杖 2021-03-29 21:07:00
当我尝试使用numpy的loadtxt函数从CSV文件导入数据时遇到一个小问题。这是我拥有的数据文件类型的样本。将其称为“ datafile1.csv”:# Comment 1# Comment 2x,y,z 1,2,34,5,67,8,9......# End of File Comment我认为适用于这种情况的脚本如下所示:import numpy as npFH = np.loadtxt('datafile1.csv',comments='#',delimiter=',',skiprows=1)但是,我遇到了一个错误:ValueError: could not convert string to float: x这告诉我kwarg'skiprows'不会跳过标头,而是在第一行注释。我可以简单地确保skiprows = 3,但麻烦的是我有很多文件,文件的顶部不一定都具有相同数量的注释行。如何确保在使用loadtxt时仅在这种情况下获得实际数据?
查看完整描述

3 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

创建自己的自定义过滤器功能,例如:


def skipper(fname):

    with open(fname) as fin:

        no_comments = (line for line in fin if not line.lstrip().startswith('#'))

        next(no_comments, None) # skip header

        for row in no_comments:

            yield row


a = np.loadtxt(skipper('your_file'), delimiter=',')


查看完整回答
反对 回复 2021-04-02
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

def skipper(fname, header=False):

    with open(fname) as fin:

        no_comments = (line for line in fin if not line.lstrip().startswith('#'))

        if header:

            next(no_comments, None) # skip header

        for row in no_comments:

            yield row


a = np.loadtxt(skipper('your_file'), delimiter=',')

鉴于在某些情况下,csv文件具有注释行(以#开头),但没有标题行,这只是对@Jon Clements答案的少许修改,增加了一个可选参数“ header”。


查看完整回答
反对 回复 2021-04-02
  • 3 回答
  • 0 关注
  • 1050 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信