int() 基数10无效文字:“
我有一串来自加速度计的数据(x, y, z),在文本文件中看起来像这样:“XXX XXX XXX”。我想读取这些数据,并把它们转换成一个包含三个子图的折线图。我正在借用朋友的一些代码来实现这个目标,但我不太确定这些错误是从哪里来的。显然,我还是个初学者。非常感谢大家的帮助。
错误信息:无法将字符串转换为整数(int),基数为10。
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()
2 个回答
0
你可能是在用 int()
来处理一个 float()
的值。
如果你需要处理空值,可以试试 int(s or 0)
这个写法。
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:
...
可能绘图也可以更简单一些,不过我不太明白你为什么要分段绘图。