我有一个简单的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文件导入numpyfloat数组吗?
默认分隔符read_table是TAB,而不是空格。告诉它使用空间:
pd.read_table('a.dat', header=None, sep='s')
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。