Python快速数据读入和切片

Posted

技术标签:

【中文标题】Python快速数据读入和切片【英文标题】:Python quick data read-in and slice 【发布时间】:2017-04-12 12:21:35 【问题描述】:

我在 python 中有以下代码,我想我需要一些帮助来优化它。 我正在读取几百万行数据,但如果每行一个坐标不符合我的标准,则将它们中的大部分丢弃。 代码如下:

def loadFargoData(dataname, thlimit):
    temp = np.loadtxt(dataname)
    return temp[ np.abs(temp[:,1]) < thlimit ]

我已经将它编码为 C 类型代码,当然现在在 python 中这非常慢。 我可以以某种方式扔掉我的临时对象吗?或者 Pythonian 群体可以帮助我进行哪些其他优化?

【问题讨论】:

可能是这个问题的重复:***.com/questions/14645789/… @Zefick:感谢您的链接。确实,如果可以构建模仿数学运算(如 \ge...)的正则表达式,那将解决我的问题。这可能吗? 【参考方案1】:

pandas 中包含的数据阅读器可能会加快您的脚本速度。它的读取速度比 numpy 快。 Pandas 将生成一个数据框对象,易于查看为 numpy 数组(如果愿意,也易于转换),因此您可以在 numpy 中执行您的条件(在您的问题中看起来足够高效)。

import pandas as pd

def loadFargoData(dataname, thlimit):
    temp = pd.read_csv(dataname)  # returns a dataframe
    temp = temp.values            # returns a numpy array
    # the 2 lines above can be replaced by   temp = pd.read_csv(dataname).values
    return temp[ np.abs(temp[:,1]) < thlimit ]

您可能需要查看 Pandas 的文档以了解正确读取文件可能需要的函数参数(标题、分隔符等)。

【讨论】:

很抱歉迟到了你的回答,我正忙于另一个项目。 Pandas 阅读器实际上效果很好,我的数据速度提高了 15-16 倍。

以上是关于Python快速数据读入和切片的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 python 3 对 h5py 中的键进行切片而不形成列表?

将 os.Stdin 中的数字读入 Go 中的数组或切片

Excel数据透视表(图)的切片器,快速筛选数据表格与可视化!

Python 中的反转字符串:reversed()切片等

如何快速学习Go的切片和数组数据类型

pyhton中pandas数据分析模块快速入门(非常容易懂)