Python 读取输入的最快方法

2023-11-22

我想读取一个包含整数列表列表的巨大文本文件。 现在我正在执行以下操作:

G = []
with open("test.txt", 'r') as f:
    for line in f:
        G.append(list(map(int,line.split())))

然而,大约需要 17 秒(计时)。有什么办法可以减少这个时间吗?也许,有一种方法可以不使用地图。


numpy 有以下功能loadtxt and genfromtxt,但都不是特别快。在广泛分布的图书馆中可用的最快的文本阅读器之一是read_csv函数于pandas (http://pandas.pydata.org/)。在我的计算机上,读取每行包含两个整数的 500 万行大约需要 46 秒numpy.loadtxt, 26 秒numpy.genfromtxt,以及 1 秒多一点的时间pandas.read_csv.

这是显示结果的会话。 (这是在Linux,Ubuntu 12.04 64位上。你在这里看不到它,但是每次读取文件后,通过运行清除磁盘缓存sync; echo 3 > /proc/sys/vm/drop_caches在一个单独的 shell 中。)

In [1]: import pandas as pd

In [2]: %timeit -n1 -r1 loadtxt('junk.dat')
1 loops, best of 1: 46.4 s per loop

In [3]: %timeit -n1 -r1 genfromtxt('junk.dat')
1 loops, best of 1: 26 s per loop

In [4]: %timeit -n1 -r1 pd.read_csv('junk.dat', sep=' ', header=None)
1 loops, best of 1: 1.12 s per loop
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 读取输入的最快方法 的相关文章

随机推荐

  • 在没有 UAC 提示的情况下从 .NET 应用程序执行进程

    我有一个场景 我需要从 NET 应用程序启动 EXE 但我无法绕过弹出的 UAC 提示 甚至在另一个 EXE 启动之前就会触发提示 可能是在调用时Process Start 我使用此代码来启动应用程序 var info new Proces
  • CSS(也许带有Compass):跨浏览器渐变

    我想在 CSS 中获得渐变 也许通过Compass 适用于所有主要浏览器 包括 IE7 有没有一种简单的方法可以做到这一点 无需编写大量代码 也无需自定义图像文件 我看了指南针的梯度混合 但它不适用于 Internet Explorer 有
  • 网址中可以输入中文吗?

    URL中可以输入中文吗 经测试 URL中可以输入中文 并且会转换为punycode并发出请求 到达相关页面 但目前是否还有其他人会验证网站 URL 是否也允许使用中文字符 Punycode 的存在是为了能够在不受支持的软件中使用非拉丁脚本
  • 使用 jQuery Ajax 获取另一个页面的 div 内容

    我希望 page html 通过 ajax 请求 side html 的内容并提取其两个 div 的内容 但尽管我尝试了一切 但我无法找到解析响应的正确方法 这是 side html div ContentA div div Content
  • 如果不等待任务怎么办?

    这是我的代码 private static Stopwatch stopwatch static void PrintException Exception ex Console WriteLine stopwatch Elapsed Co
  • Facebook 广告 API 错误 - 未启用使用

    因此 我一直在尝试创建一个使用 Facebook Ads API 来获取广告费用和统计数据的应用程序 我已经创建了一个应用程序并将我的广告帐户 ID 添加到应用程序设置中 但仍然收到错误 error message 274 The ad a
  • 为什么使用 C++ Typedef?

    我对 typedef 的理解是给一个声明一个别名 这样的 int 声明现在将被称为 Integer 但为什么 为什么有人会使用 typedef 更有利的原因是什么 typedef int Integer Integer blamo 50 c
  • C++ 中的粗体输出

    我正在构建一本字典 当我打印 输出 单词定义时 我想以粗体打印单词本身 当我打印时 cout lt
  • 您可以通过 Flex 使用 Amazon S3 吗?

    由于缺少 clientaccesspolicy xml 通过 Flex 使用 Amazon S3 似乎存在问题 有什么解决办法吗 Edit 下面的两个答案都很棒并且有效 我都赞成 我不会为这个问题指定答案 因为它们都有效 您可以通过 Fle
  • 在 VB 中键入时,如何使智能感知上的 Enter 键的反应方式与 Visual Studio 中的 C# 中的反应方式相同?

    我使用的是 Visual Studio 2008 并且习惯了 C 当智能感知弹出时 我通过按 Enter 键选择我想要的内容 它不会跳到下一行 在 VB 中 当我在智能感知上按下回车键时 我会跳转到下一行 有谁知道这个智能感知选项的设置可能
  • 是否可以在 Emacs 中用文本替换边缘位图?

    我很想用简单 雅致的文本 甚至可能是一个很好的 unicode 字符 例如 u2026省略 这可能吗 不它不是 边缘 位图 实际上是位图 即覆盖在边缘上的 0 1 位向量 没有办法直接将任意 unicode 字符渲染到边缘上 您可以做的就是
  • IN 子句中的通配符

    SQL 我想在 IN 子句中使用通配符 但没有得到我期望的结果 我的查询是这样的 SELECT DISTINCT ID FROM INST WHERE TYPE in IP International 请帮助解决这个问题 解决方案应该是使用
  • Python for 循环中的“pass”和“continue”有区别吗?

    两个Python关键字之间有什么显着差异吗continue and pass就像例子中一样 for element in some list if not element pass and for element in some list
  • 可以改变JButton的形状吗?

    是否可以将 JButton 的形状从矩形更改为圆形 Sean Cogan 提供的链接就是您所需要的 如果您想要简短 请设置一个图像 圆形或任何您希望按钮看起来相似的形状 使用setIcon然后在 JButton button1 上设置这些值
  • 获取类转换异常,其中两个类完全相同

    我正在做一个 JBoss SEAM 项目 当我查看表单时 我收到此错误 java lang ClassCastException it cogitoweb csi entity csiorelav CsiTipoLav cannot be
  • Unix 域:connect():没有这样的文件或目录

    如标题所述 我的连接 调用具有相应地址的 unix 域类型套接字会导致错误ENOENT 没有这样的文件或目录 两个套接字已正确初始化 并且相应地创建并绑定了套接字文件 服务器和客户端套接字在不同的进程中运行 尽管客户端进程是 fork 和
  • 使用标记列表构建抽象语法树

    我想从令牌列表构建 AST 我正在制作一种脚本语言 并且已经完成了词法分析部分 但我不知道如何创建 AST 所以问题是 我该如何采取这样的事情 WORD int WORD x SYMBOL NUMBER 5 SYMBOL 并将其转换为抽象语
  • GWT - 在单元树中添加和删除节点

    这里我有一个完整且非常简单的示例来动态添加 删除 单元树的节点 我的例子效果不太好 似乎有 是刷新问题 只有关闭 展开节点才会显示正确的 结果 我在这个论坛上也没有找到适合这个问题的答案 也许有人可以尝试我的例子并告诉我问题出在哪里 任何其
  • 在一个 JFrame 中使用两个 JPanel

    我正在尝试创建一个程序 允许用户单击按钮将某些内容放入JPanel并允许他们移动该物品 我已经找到了一个很好的布局来允许移动组件 请参阅this关联 但是 我只是好奇创建这样的布局的最佳方法 我的希望是有这样的东西 我怎样才能做到这一点 我
  • Python 读取输入的最快方法

    我想读取一个包含整数列表列表的巨大文本文件 现在我正在执行以下操作 G with open test txt r as f for line in f G append list map int line split 然而 大约需要 17