当我试图用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时,我只在这种情况下获取实际数据?
P.S.-我也愿意接受bash解决方案。
最佳答案
使用生成器表达式手动跳过注释行:
import numpy as np
with open('datafile1.csv') as f:
lines = (line for line in f if not line.startswith('#'))
FH = np.loadtxt(lines, delimiter=',', skiprows=1)
关于python - numpy loadtxt跳过第一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17151210/