将两列文本文件中的浮点数读入Python中的数组时出错

Posted

技术标签:

【中文标题】将两列文本文件中的浮点数读入Python中的数组时出错【英文标题】:error with reading float from two column text file into an array in Python 【发布时间】:2013-10-02 03:25:19 【问题描述】:

我有一个文本文件,其中包含由选项卡分隔的 2 列,其中包含一些我想读入数组并执行一些简单操作的数据,例如绘制数据。第二列中的数据采用科学计数法,可以取非常小的值,例如从 10e-27 到 10e-50 的数量级。例如这里是一个数据样本

0.00521135   -1.197189e-31
0.00529274   -7.0272737e-32
0.00530917   -6.0163467e-32
0.00532565   -4.9990405e-32
0.00534218   -3.9747722e-32
0.00535876   -2.9457271e-32
0.0053754    -1.9094542e-32
0.00539208   -8.6847519e-33
0.00540882    1.7851373e-33
0.00542561    1.2288483e-32
0.00544245    2.2850705e-32
0.00545934    3.3432858e-32
0.00547629    4.4084594e-32
0.00549329    5.4765499e-32
0.00551034    6.5491709e-32

这是我的代码的样子:

import numpy as np
import matplotlib.pyplot as plt
with open('data.dat', 'r') as f2:
lines = f2.readlines()
data = [line.split()for line in lines] 
data2 = np.asfarray(data)
x1 = data2[:,0]
y1 = data2[:,1]
plt.plot(x1, y1)
plt.show()

我已使用此代码测试示例数据(.dat 格式)文件,它似乎工作正常,但是当我在我的数据集上运行此代码时,它给了我以下错误。

Traceback (most recent call last):
File "read_txt_col.py", line 17, in <module>
data2 = np.asfarray(data)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages  /numpy/lib/type_check.py", line 103, in asfarray
return asarray(a,dtype=dtype)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/numeric.py", line 235, in asarray
return array(a, dtype, copy=False, order=order)
ValueError: setting an array element with a sequence.

有人可以帮忙吗!

【问题讨论】:

对此有很多答案:***.com/questions/4674473/…***.com/questions/13310347/… 基本问题是您似乎有不同长度的序列。我会尝试通过二进制搜索在您的数据中找到问题:加载一半的数据。成功的?添加一半的数据并进行测试。成功的?添加另一半,等等。 【参考方案1】:

不要重新发明***!,它会更容易使用numpy.loadtxt

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> data = np.loadtxt('data.dat')
>>> x1 = data[:,0]
>>> y1 = data[:,1]
>>> plt.plot(x1, y1)
>>> plt.show()

【讨论】:

要获得更多功能,尤其是在错误检查方面,值得一提numpy.genfromtxt()

以上是关于将两列文本文件中的浮点数读入Python中的数组时出错的主要内容,如果未能解决你的问题,请参考以下文章

当我使用较小的浮点数时,为啥 sklearn 中的 KNN 实现会变慢?

在Python中的小数点后面的浮点数中添加零

在 C++ 中将某种结构化的文本文件读入数组

如何将小数字转换为python中的浮点数? [复制]

Python中的浮点数探秘

Python中的浮点数探秘