我有来自加速度计(x,y,z)的一串数据(在文本文件“XXX XXX XXX”中看起来像这样,我试图读取它并转换为带有三个子图数据的折线图。我正在调整朋友的一些代码来做这个,但我不确定这些错误是从哪里来的。显然是初学程序员。非常感谢。
错误:带有基数10的int()的文字无效
import os
import numpy as npy
import matplotlib.pyplot as plt
global y0,y1,y2
increment_size = 8000
datasample_size = 16000
from os.path import join
filepath = "C:\\Users\\Riley\\Documents\\Programming\\"
infile = join(filepath, 'data.txt')
infile = open(infile,"r")
singleline = infile.readline()
asciidata = singleline.split()
asciidata[0]=asciidata[0][3:]
y0=[int(asciidata[0])]
y1=[int(asciidata[1])]
y2=[int(asciidata[2])]
count = 0
for singleline in infile:
count += 1
if (count % 10000) == 0:
print(count)
asciidata = singleline.split()
y0.append(int(asciidata[0]))
y1.append(int(asciidata[1]))
y2.append(int(asciidata[2]))
infile.close()
totaldata=count-1
print(totaldata)
low = 0
high = datasample_size
while low < totaldata:
t = npy.arange(low,high)
plt.subplot(311)
plt.ylim(-2000,2000)
plt.plot(t,y0[low:high])
plt.subplot(312)
plt.ylim(-2000,2000)
plt.plot(t,y1[low:high])
plt.subplot(313)
plt.ylim(-2000,2000)
plt.plot(t,y2[low:high])
outfilename = filepath + 'Plots/' + shortfilename + '_' + str(low) + '.png'
plt.savefig(outfilename)
outfilename2 = filepath + 'Datasegments/' + shortfilename + '_' + str(low) + '.txt'
outfile = open(outfilename2,"w")
for j in range(low,high):
outfile.write(str(y0[j])+'\t'+str(y1[j])+'\t'+str(y2[j])+'\n')
# print(low),
plt.show()
low = low + increment_size
high = high + increment_size
if high > totaldata:
high = totaldata
# if low > 10000:
# break
# plt.close()
答案 0 :(得分:0)
您可能尝试使用float()
解析int()
。
如果您需要处理空值,请尝试int(s or 0)
答案 1 :(得分:0)
有一个numpy功能可以为你完成所有这些功能。我很难在不知道你的数据文件格式的情况下进行测试(如果你粘贴在'data.txt'
的前几行中会有所帮助)
from os import path
import numpy as npy
import matplotlib.pyplot as plt
increment_size = 8000
datasample_size = 16000
filepath = "C:\\Users\\Riley\\Documents\\Programming\\"
infile = path.join(filepath, 'data.txt')
# This line replaces all the file reading lines:
y0, y1, y2 = npy.genfromtxt(infile, unpack=True)
totaldata = len(y0)
print(totaldata)
low = 0
high = datasample_size
while low < totaldata:
...
可能也可以更简单地完成绘图,但我不确定我理解你为什么要逐节绘制它。