python - 在python中将数据提取到矩阵或numpy数组中的有效方法
问题描述
我想从 txt 文件中提取数据,同时使用 python 删除文件中存在的文本。
我有一个文件,说 ABC.txt 如下:
步骤 = 1
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
STEP = 2
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
STEP = 3
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
22.530183726628522 0.0000000000000000
忽略 'STEP = ' 和以下空间,我想将所有数字数据存储到一个 numpy 数组中。
我尝试了以下有效的脚本:
import numpy as np
with open("ABC.txt", "r") as f:
lines = f.readlines()
data =np.zeros([24,2])
kk=0
for ii in range(3):
for jj in range(10*ii+2, 10*ii+9+1):
data[kk,:] = np.fromstring(lines[jj], dtype=float, sep=' ')
kk=kk+1
有没有更直接的方法来做这个操作?
解决方案
或者,如果您无权访问外部库但仍想执行此任务。您可以执行以下操作:
with open("ABC.txt", "r") as f:
lines = f.readlines()
arr = list()
for line in lines:
if line[0].isdecimal(): # for every line see if it begins with a decimal number
arr.append(line.split())
以上也可以通过列表推导来完成,如下所示,两者都会给出相同的结果:
arr1 = [line.split() for line in lines if line[0].isdecimal()]
推荐阅读
- javascript - 如何在mysql语句中插入动态参数?
- ckeditor - ckeditor 删除内联样式和 iframe
- laravel - 未定义的方法 Illuminate\Database\Query\Builder::setPath()
- google-apps-script - 自定义 Google Drive 用户界面
- python - Beautiful Soup 基于类型的内容提取
- python-3.x - 嵌套列表推导如何在 Python 中工作?
- html - 在 CSS 预加载器下方放置文本
- php - 在数组中创建数组的 PHP 结构 (JSON)
- python-2.7 - 基于迭代从单个数据帧创建多个熊猫数据帧
- c++ - c++ 的正确缩进做法是什么?