首先,我是一个非常弱的程序员,并且是 python 和这个网站的新手。对我的错误感到抱歉。所以,我的数据文件如下所示:
paste bin 文件总共有 6221 行。为了进行测试,我将行数限制为最大 1000。
我正在尝试读取数字行中的浮点值,主要列是 1 和 2。
到目前为止,我已经编写了这段代码来从文件中提取我想要的行:
f = open('Sample Data.txt',"r")
num=0
line = f.readlines()
for n in range (107, 1000, 1): #6621
if (n>108):
print line[n]
效果很好,将每行中的数字打印为字符串。 (每个数字都有 4 个空格与下一个数字分隔,除了每列中的第一个数字有 2 个空格。)
我现在希望将字符串转换为数组或列表,以便我可以处理各个数字并最终在 y 轴上绘制第 2 列的图表。我编写了以下代码来分割字符串并将其转换为 float :
for i in range(108,1000,1):
line[i].split(' ')
float(line[i]) = X[i]
print(X[i])
当我运行它时,它返回以下错误:
Traceback (most recent call last):
File "<pyshell#25>", line 2, in <module>
print(X[i])
NameError: name 'X' is not defined
我已经将其分解,并且 line[i].split(' ') 似乎有点工作,因为当我测试打印该行时,它给出了 3 个单独的字符串,如下所示:
[' 5070.74537037 -0.003382', '0.009507\n']
我不知道为什么会出现这个错误。我认为 X[i] 是我应该用 float 创建的新数组,但由于某种原因它似乎不想工作。我在某处读到,当使用大型数据集时,最好使用多维数组......如果我什至无法理解一维,我就没有机会了解其他维度!
有什么方法可以创建一个数组或两个一维数组,使我能够独立操作潜在图的 x 或 y 列?
感谢您的宝贵时间!
最佳答案
使用 split
可以更优雅地处理这一点,每行无需任何参数:
f = open('Sample Data.txt',"r")
num = 0
for line_number, line in enumerate(f):
if (line_number < 109):
#jump over lines at the beginning
continue
# now split the line everywhere there are one or more whitespaces:
numbers_as_strings = line.split()
# and convert the numbers to floats
numbers = list(map(float, numbers_as_strings))
关于python - 从字符串中提取 float 以创建多个/多维数组来操作数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19716899/