python - 如何使用 numpy.loadtxt 读取文本文件的一部分并转换为数组
问题描述
我有一个文本文件,其中包含以下内容:
type=0
alg=1
c=3 5 7 8 10 11 14 15 16 17
arr=(0, -7.05154314637184143066e-02) (1, -1.80315405130386352539e-01) (2, -3.32004070281982421875e-01) (3, 5.91193616390228271484e-01) (4, -1.21851079165935516357e-01) (5, -2.71257162094116210938e-01) (6, 2.46545433998107910156e-01) (7, 8.54252055287361145020e-02)
如何从该文本文件(例如名称为“file.txt”)中读取数组arr
并将其转换为具有两列的数组?输出应该是:
array([[ 0. , -0.07051543],
[ 1. , -0.18031541],
[ 2. , -0.33200407],
[ 3. , 0.59119362],
[ 4. , -0.12185108],
[ 5. , -0.27125716],
[ 6. , 0.24654543],
[ 7. , 0.08542521]])
如果我有这条线:
0,-7.05154314637184143066e-02,1,-1.80315405130386352539e-01,2,-3.32004070281982421875e-01,3, 5.91193616390228271484e-01,4,-1.21851079165935516357e-01,5,-2.71257162094116210938e-01,6, 2.46545433998107910156e-01,7,8.54252055287361145020e-02
我可以使用:
import numpy as np
arr=np.loadtxt('file.txt', delimiter=',')
arr.reshape(-1,2)
解决方案
简单的 Python 将带您到可以使用的地方np.fromstring
:
for line in open('file.txt'):
if line.startswith('arr='):
line = line[5:].rstrip().rstrip(')').replace(') (', ',')
arr = np.fromstring(line, sep=',').reshape(-1, 2)
break # or return arr
else:
raise ValueError('SOL!')
推荐阅读
- jenkins - 通过 Jenkins 连接 Git 存储库抛出 Permission Denied 错误
- javascript - 使用 amCharts 执行事件侦听器 clickGraphItem 时如何引用 JavaScript 对象数组中的变量
- ios - WKWebView 的 WKUrlSchemeHandler 和带有 Secure 属性的 Cookies
- reactjs - 构建 Reacjs 项目后不透明度值更改为 1%
- powershell - 如何在 Powershell 中对字符串进行 hash256 和数字签名(使用私钥)
- php - 错字3 tt_news 配置列表模板
- apache-kafka - 同一 Kafka 主题的多个 Flink 管道
- vue.js - 在 Vue.js 中进行样式设置的最佳且简单的方法是什么?我可能认为引导程序是最好的选择
- wordpress - Wordpress:如何只允许特定角色进行一些评论操作(删除、编辑...)?
- c++ - 在下面的代码中,外部块 m 如何给出输出 20