File PythonPylab,将文本文件分配到具有有趣格式的数组中
为了绘制这张图,我在尝试正确设置格式时遇到了一些困难。这就是我目前所拥有的File PythonPylab,将文本文件分配到具有有趣格式的数组中,file,text,matplotlib,plot,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 titl
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:float()的文本无效:56.25 0.000000 578
。我不知道这个错误是什么意思。需要帮助
文本文件的格式如下所示:
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
要读取文本文件,最好使用内置函数,而不是逐行读取和解析:
np.loadtxt("spineprox.txt")
有关文档,请参见此处:
然后它变成这样,您可以访问x
和y
作为数组的列:
data = np.loadtxt("spineprox.txt")
x = data[:,0]
y = data[:,1]
plt.plot(x,y)
或者,正如Wim所建议的那样,
x,y=data.T
您的问题是数字仍然是字符串,您没有在任何地方转换为浮点
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
在文本文件中看起来不是这样的……这就是你在问题中粘贴它的方式。您可以随时编辑您的问题。当我将它们切换到行时,列表索引超出范围。看起来像是由制表符分隔的列,请尝试
column.split()
data=np.loadtext(“spineprox.txt”)AttributeError:'module'对象没有属性'loadtext',现在加载需要一些时间。一定是因为此文本文件AttributeError中有太多值:“numpy.ndarray”对象没有属性“split”,您不再需要拆分loadtxt
将为您完成此操作。从pylab导入*导入numpy作为np x,y=np.loadtxt(“spineprox.txt”)plt.title(“绘图标题…”)plt.xlabel(“您的x标签…”)plt.ylabel(“您的y标签…”)plt.plt(x,y,label='the data')您忘记了Wim答案中的.T