如何使用 pandas 将 ascii dat 文件作为浮点数而不是字符串导入 python



我有一个简单的ASCII dat文件,我想将其作为数组导入python numpy。dat 文件 (a.dat) 看起来像这样:

1.0000000e+00   2.0000000e+00
3.0000000e+00   4.0000000e+00

遇到的问题是我使用该pandas.read_table导入文件

a=pd.read_table('a.dat',header=None)

当我使用 a.values 转换为数组时

结果是

array([['   1.0000000e+00   2.0000000e+00'],
       ['   3.0000000e+00   4.0000000e+00']], dtype=object)

问题是浮点数被解释为字符串。我的实际数据文件比这个简单的矩阵大得多,因此将字符串转换为浮点数的后处理可能不是很有效。

奇怪的是,我什至无法指定dtype=np.float因为它说:

TypeError: Cannot cast array from dtype('O') to dtype('float64') according to the rule 'safe'

那么有没有一种直接的方法可以将这种类似矩阵的 dat 文件导入浮点数组numpy

任何意见和想法不胜感激。谢谢!

read_table的默认分隔符是 TAB,而不是空格。只需告诉它使用空间:

pd.read_table('a.dat', header=None, sep='s')
#     0    1
#0  1.0  2.0
#1  3.0  4.0

最新更新