基数为10的int()的文字无效:“

时间:2014-03-18 20:44:31

标签: python text matplotlib

我有来自加速度计(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()

2 个答案:

答案 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:
    ...

可能也可以更简单地完成绘图,但我不确定我理解你为什么要逐节绘制它。