ast*_*max 13 python csv bash numpy import-from-csv
当我尝试使用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
Run Code Online (Sandbox Code Playgroud)
我认为适用于这种情况的脚本如下:
import numpy as np
FH = np.loadtxt('datafile1.csv',comments='#',delimiter=',',skiprows=1)
Run Code Online (Sandbox Code Playgroud)
但是,我收到一个错误:
ValueError: could not convert string to float: x
Run Code Online (Sandbox Code Playgroud)
这告诉我,kwarg'skiprows'没有跳过标题,它正在跳过第一行评论.我可以简单地确保skiprows = 3,但复杂的是我有非常多的文件,并不是所有文件顶部都必须有相同数量的注释行.我怎样才能确保当我使用loadtxt时,我只是在这样的情况下得到实际数据?
PS - 我也对bash解决方案持开放态度.
fal*_*tru 21
使用生成器表达式手动跳过注释行:
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)
Run Code Online (Sandbox Code Playgroud)