我有一个简单的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)
问题在于浮点数被解释为字符串。我的实际数据文件比这个简单的矩阵大得多,因此将字符串转换为float的后期处理可能不是很有效。
奇怪的是,我什至不能指定dtype=np.float
,因为它说:
TypeError: Cannot cast array from dtype('O') to dtype('float64') according to the rule 'safe'
那么,有没有直接的方法可以将这种类似矩阵的dat文件导入numpy
浮点数组?
任何评论和想法都将受到赞赏。谢谢!
答案 0 :(得分:0)
read_table
的默认分隔符是TAB,而不是空格。只需告诉它使用空间即可:
pd.read_table('a.dat', header=None, sep='\s')
# 0 1
#0 1.0 2.0
#1 3.0 4.0