python - 如何将带有fortran格式数字的文件读入python?
问题描述
我有一个带有这样数字的 fortran 格式的 txt 文件0.755473D-08
。
如果我使用np.genfromtxt(data,dtype=None)
,它会显示b'0.755473D-08'
。我怎样才能摆脱b
?
解决方案
In [315]: txt = '''0.755473D-08
...: 0.755473D-08
...: 0.755473D-08'''
In [316]: np.genfromtxt(txt.splitlines())
Out[316]: array([nan, nan, nan])
In [317]: np.genfromtxt(txt.splitlines(),dtype=None)
...
Out[317]: array([b'0.755473D-08', b'0.755473D-08', b'0.755473D-08'], dtype='|S12')
使用字符串replace
:
In [319]: txt.replace('D','e')
Out[319]: '0.755473e-08\n0.755473e-08\n0.755473e-08'
In [320]: np.genfromtxt(_.splitlines())
Out[320]: array([7.55473e-09, 7.55473e-09, 7.55473e-09])
这也可以逐行完成(从文件中读取时)。
使用转换器,应用于每个元素(每行列):
In [326]: np.genfromtxt(txt.splitlines(), converters={0:lambda x:float(x.replace('D','e'))}, encoding=None)
Out[326]: array([7.55473e-09, 7.55473e-09, 7.55473e-09])
它不会尝试在dtype
转换器之后进行任何进一步的转换,因此我必须将 包含float()
在转换器中。
推荐阅读
- kubernetes - 如何知道CoreDNS在kubernetes pod中生效
- ruby - 打印 ruby 文件中定义的所有方法
- javascript - 在 javascript 中使用 array.map() 内部的异步方法
- php - 关于isset($_session['username'])的问题
- reactjs - React - 如何检测父组件的所有子组件何时对用户可见?
- azure - Azure Function GET 发送:您需要启用 JavaScript 才能运行此应用
- excel - 类属性作为另一个类 VBA 的实例
- ruby-on-rails - hstore 将隐藏字段作为数组发送
- nginx - Nginx - 标头字段中的客户端真实IP
- python - 根据多个条件从数据框中删除记录