Python pylab,将文本文件分配到有趣格式的数组中

时间:2013-05-09 10:08:43

标签: file text matplotlib plot

我有一些麻烦试图让格式正确以绘制此图表。这就是我到目前为止所拥有的

from pylab import*

with open("spineprox.txt") as f:
    data = f.read()

data = data.split('\n')

x = [column.split(' ')[0] for column in data]
y = [column.split(' ')[0] for column in data]

plt.title("Plot title...")    
plt.xlabel('your x label..')
plt.ylabel('your y label...')

plt.plot(x,y, c='r', label='the data')

然后出现了这个错误:ValueError: invalid literal for float(): 56.25 0.000000578。我不知道这个错误意味着什么。需要帮助PLZ!

文本文件的格式如下:

56.25   0.000000578 
56.2501 0.000003219 
56.2502 0.000007031 
56.2503 0.000001969 
56.2504 0.000005641 
56.2505 0.000006891 
56.2506 0.000008656 
56.2507 0.000005109 
56.2508 0.000007937 
56.2509 0.000006266 
56.251  0.000009547 
56.2511 0.000011828 
56.2512 0.000007297 
56.2513 0.000008641 
56.2514 0.000008969 
56.2515 0.000008234 
56.2516 0.000007984 
56.2517 0.000010266 
56.2518 0.000004594 
56.2519 0.000008469 
56.252  0.000006297

2 个答案:

答案 0 :(得分:2)

你的问题是数字仍然是字符串,你没有在任何地方转换为浮点数。

x = [float(column.split(' ')[0]) for column in data]
y = [float(column.split(' ')[0]) for column in data]

不要重新发明轮子,更好的选择是使用numpy.loadtxt而不是手动解析文件。

import numpy as np
x,y = np.loadtxt('spineprox.txt').T

答案 1 :(得分:1)

要阅读文本文件,您可以更好地使用内置函数,而不是逐行阅读和解析它:

np.loadtxt("spineprox.txt")

请参阅此处了解文档:http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html

然后就会出现这样的情况,您可以在其中访问xy作为数组的列:

data = np.loadtxt("spineprox.txt") 
x = data[:,0] 
y = data[:,1]

plt.plot(x,y)

或Wim提出的x, y = data.T