猿问

numpy loadtxt跳过第一行

当我尝试使用numpy的loadtxt函数从CSV文件导入数据时遇到一个小问题。这是我拥有的数据文件类型的样本。


将其称为“ datafile1.csv”:


# Comment 1

# Comment 2

x,y,z 

1,2,3

4,5,6

7,8,9

...

...

# End of File Comment

我认为适用于这种情况的脚本如下所示:


import numpy as np

FH = np.loadtxt('datafile1.csv',comments='#',delimiter=',',skiprows=1)

但是,我遇到了一个错误:


ValueError: could not convert string to float: x

这告诉我kwarg'skiprows'不会跳过标头,而是在第一行注释。我可以简单地确保skiprows = 3,但麻烦的是我有很多文件,文件的顶部不一定都具有相同数量的注释行。如何确保在使用loadtxt时仅在这种情况下获得实际数据?


倚天杖
浏览 1066回答 3
3回答

开心每一天1111

创建自己的自定义过滤器功能,例如: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 rowa = np.loadtxt(skipper('your_file'), delimiter=',')

慕桂英546537

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 rowa = np.loadtxt(skipper('your_file'), delimiter=',')鉴于在某些情况下,csv文件具有注释行(以#开头),但没有标题行,这只是对@Jon Clements答案的少许修改,增加了一个可选参数“ header”。
随时随地看视频慕课网APP

相关分类

Python
我要回答