我的脚本有问题。我有(blabla。)txt文件,例如:
blablaba bla
dsadsadsa
dsadsadsa
50 2323
60 2839
70 9832
80 0000
.....
....
...
和我写的脚本:
import numpy as np
import matplotlib.pyplot as plt
with open("blabla.txt") as f:
for line in xrange(3):
next(f)
for line in f:
data = f.read()
data = data.split('\n')
x = [row.split()[0] for row in data]
y = [row.split()[1] for row in data]
index = [i for i,val in enumerate(x)]
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.set_title("graph")
ax1.set_xlabel('time')
ax1.set_ylabel('distance')
ax1.set_xticklabels(x)
ax1.plot(index ,y, c='r', label='distance1')
leg = ax1.legend()
plt.locator_params(nbins=len(index)-1)
plt.show()
第一个问题是:当我想跳过(因为图表)txt文件中的前三行时,是否为真(脚本中的语法)?
第二个:在脚本之后它说:
data = f.read()
ValueError: Mixing iteration and read methods would lose data.
问题是什么,因为它的大小? (txt文件大约有600 000行)
感谢所有帮助.... Funstorm60
答案 0 :(得分:0)
您可以使用:
with open("<fname>.txt", 'r') as datafile:
__data = datafile.readlines()[3:]
data = [[float(value) for value in line.split()] for line in __data]
这将为您提供数据的2D数组 - 尽管它不包含您在问题中包含的索引信息。
编辑:抱歉,我错过了对.split()
编辑:举个例子
1 2 3 4
2 3 4 5
6 5 4 3
将给出输出:
[[1.0, 2.0, 3.0, 4.0], [2.0, 3.0, 4.0, 5.0], [6.0, 5.0, 4.0, 3.0]]