栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

NumPy实时读取带有过滤线的文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

NumPy实时读取带有过滤线的文件

我可以想到两种提供您所要求的功能的方法:

  1. 要以块/或以n行的 跨度 /等方式读取文件,请执行以下操作:
    您可以将传递

    generator
    给numpy.genfromtxt以及numpy.loadtxt。这样,您可以有效地从文本文件中加载大型数据集,同时保留两个函数的
    所有 便捷解析功能。

  2. 要仅从符合可以表示为正则表达式的条件的行中读取数据,请执行以下操作:
    可以使用numpy.fromregex并使用

    regularexpression
    精确 定义应加载输入文件中给定行中的哪些标记。与模式不匹配的行将被忽略。

为了说明这两种方法,我将使用研究背景中的示例。
我经常需要使用以下结构加载文件:

6 generated by VMD  CM         5.420501        3.880814        6.988216  HM1        5.645992        2.839786        7.044024  HM2        5.707437        4.336298        7.926170  HM3        4.279596        4.059821        7.029471  OD1        3.587806        6.069084        8.018103  OD2        4.504519        4.977242        9.7091506 generated by VMD  CM         5.421396        3.878586        6.989128  HM1        5.639769        2.841884        7.045364  HM2        5.707584        4.343513        7.928119  HM3        4.277448        4.057222        7.022429  OD1        3.588119        6.069086        8.017814

这些文件可能很大(GB),我只对数值数据感兴趣。所有数据块都具有相同的大小(

6
在此示例中),并且它们始终由两行分隔。因此
stride
,的区块为
8

使用第一种方法:

首先,我将定义一个生成器,以过滤掉不需要的行:

def filter_lines(f, stride):    for i, line in enumerate(f):        if i%stride and (i-1)%stride: yield line

然后打开文件,创建一个

filter_lines
-generator(在这里我需要知道
stride
),然后将该生成器传递给
genfromtxt

with open(fname) as f:    data = np.genfromtxt(filter_lines(f, 8),   dtype='f',   usecols=(1, 2, 3))

这就像微风。请注意,我可以用来

usecols
摆脱数据的第一列。以相同的方式,您可以使用所有其他功能
genfromtxt
-检测类型,在列之间更改类型,缺少值,转换器等。

在此示例

data.shape
(204000, 3)
,原始文件由
272000
行组成。

在这里,

generator
用来过滤同质的线条,但是同样可以想象它基于(简单)标准过滤掉不均匀的线条块。

使用第二种方法:

这是

regexp
我要使用的:

regexp = r's+w+' + r's+([-.0-9]+)' * 3 + r's*n'

组(即内部

()
)定义要从给定行中提取的令牌。接下来,
fromregex
执行作业并忽略与模式不匹配的行:

data = np.fromregex(fname, regexp, dtype='f')

结果与第一种方法完全相同。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/669717.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号