我有文本文件,其中每个文件都有90列时间长度不同的时间序列数据。在这90列之前,有6行我要删除的垃圾字符串数据。从第7行开始,数据都是float类型的。
我已经尝试了以下操作,但是对我的文件没有任何更改:
folder = '/Users/LR/Desktop/S2'
files = os.listdir(folder)
for filename in files:
lines = open(filename).readlines()
open(filename, 'w').writelines(lines[6:])
我还尝试加载文件并跳过前6行,但是除非设置dtype ='str',否则numpy.loadtxt无效。它成功切出了前6行。但是它作为字符串ndarray对象导入,我不知道如何将其转换为float数组。
data = np.loadtxt('STS2.txt', delimiter = '\t', skiprows=6, dtype='str')
data = data.astype(float) # this gives the error: ValueError: could not convert string to float:
当我设置dtype = float时,我得到了相同的ValueError:
data_float = np.loadtxt('STS2.txt', delimiter='\t', dtype=float, skiprows=7) # this gives the error: ValueError: could not convert string to float:
有人知道解决此问题的方法吗?
最佳答案
每行的最后一个字段是一个空字符串,因此numpy
无法将其解析为float
。无论如何,您只对前90列感兴趣,因此添加usecols=range(90)
:
np.loadtxt('STS2.txt', skiprows=6, usecols=range(90))
(当然,如果您已经砍掉了前六行,则可以删除
skiprows=6
。)编辑
由于第一列似乎只是一个索引,因此可以使用
usecols=range(1, 90)
忽略它。