将大量数据加载到数组中的最快方法

2024-02-29

我在 stackexchange 中广泛搜索了一个将巨大(~2GB).dat 文件加载到 numpy 数组中的简洁解决方案,但没有找到合适的解决方案。到目前为止,我设法以非常快的方式(

list=[]
f = open('myhugefile0')
for line in f:
    list.append(line)
f.close()

使用 np.loadtxt 会冻结我的计算机并需要几分钟才能加载(约 10 分钟)。如何将文件作为数组打开,而不会出现似乎成为 np.loadtxt 瓶颈的分配问题?

EDIT:

输入数据是一个 float (200000,5181) 数组。一行示例:

2.27069e-15 2.40985e-15 2.22525e-15 2.1138e-15 1.92038e-15 1.54218e-15 1.30739e-15 1.09205e-15 8.53416e-16 7.71566e-16 7. 58353e-16 7.58362e-16 8.81664e -16 1.09204e-15 1.27305e-15 1.58008e-15

等等

Thanks


看着source https://github.com/numpy/numpy/blob/v1.8.1/numpy/lib/npyio.py#L628, 看起来numpy.loadtxt包含大量代码来处理许多不同的格式。如果您有一个定义良好的输入文件,那么编写针对您的特定文件格式优化的自己的函数并不太困难。像这样的东西(未经测试):

def load_big_file(fname):
    '''only works for well-formed text file of space-separated doubles'''

    rows = []  # unknown number of lines, so use list
    with open(fname) as f:
        for line in f:
            line = [float(s) for s in line.split()]
            rows.append(np.array(line, dtype = np.double))
    return np.vstack(rows)  # convert list of vectors to array

如果之前已知行数和列数,则另一种解决方案可能是:

def load_known_size(fname, nrow, ncol)
    x = np.empty((nrow, ncol), dtype = np.double)
    with open(fname) as f:
        for irow, line in enumerate(f):
            for icol, s in enumerate(line.split()):
                x[irow, icol] = float(s)
    return x

这样,您就不必分配所有中间列表。

EDIT:似乎第二个解决方案有点慢,列表理解可能比显式 for 循环更快。结合这两种解决方案,并使用 Numpy 进行从字符串到浮点数的隐式转换的技巧(刚刚发现),这可能会更快:

def load_known_size(fname, nrow, ncol)
    x = np.empty((nrow, ncol), dtype = np.double)
    with open(fname) as f:
        for irow, line in enumerate(f):
            x[irow, :] = line.split()
    return x

为了获得进一步的加速,您可能必须使用一些用 C 或 Cython 编写的代码。我很想知道这些函数打开您的文件需要多长时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将大量数据加载到数组中的最快方法 的相关文章

  • OpenCV 错误:使用 COLOR_BGR2GRAY 函数时断言失败

    我在使用 opencv 时遇到了一个奇怪的问题 我在 jupyter 笔记本中工作时没有任何问题 但在尝试运行此 Sublime 时却出现问题 错误是 OpenCV错误 cvtColor中断言失败 深度 CV 8U 深度 CV 16U 深度
  • 如何用spaCy获取依赖树?

    我一直在尝试寻找如何使用 spaCy 获取依赖树 但我找不到任何有关如何获取树的信息 只能在如何导航树 https spacy io usage examples subtrees 如果有人想轻松查看 spacy 生成的依赖关系树 一种解决
  • 无法将较大的 blob 上传到 Azure:azure.core.exceptions.ServiceRequestError:操作未完成(写入)(_ssl.c:2317)

    我正在尝试使用 Python SDK 将一些较大的 blob gt 50MB 上传到我的 Azure 存储容器 connect str os environ AZURE STORAGE CONNECTION STRING blob serv
  • 无法安装时间模块

    我试过了pip install time and sudo H pip install time 但我不断收到错误 找不到满足要求时间的版本 从 版本 未找到时间匹配的发行版 我正在 PyCharm 中工作 但真正没有意义的是我可以在 Py
  • 远程控制或脚本打开 Office 从 Python 编辑 Word 文档

    我想 最好在 Windows 上 在特定文档上启动 Open Office 搜索固定字符串并将其替换为我的程序选择的另一个字符串 我该如何从外部 Python 程序中做到这一点 OLE 什么 原生 Python 脚本解决方案 The doc
  • pandas 两个数据框交叉连接[重复]

    这个问题在这里已经有答案了 我找不到有关交叉联接的任何内容 包括合并 联接或其他一些内容 我需要使用 my function 作为 myfunc 处理两个数据帧 相当于 for itemA in df1 iterrows for itemB
  • 在python中调用subprocess.Popen时“系统找不到指定的文件”

    我正在尝试使用svnmerge py合并一些文件 它在底层使用 python 当我使用它时 我收到一个错误 系统找不到指定的文件 工作中的同事正在运行相同版本的svnmerge py 以及 python 2 5 2 特别是 r252 609
  • 如何检查包含 NaN 的列表 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 在我的 for 循环中 我的代码生成一个如下所示的列表 list 0 0 0 0 sum 0 0 0 0 该循环生成所有其他数字向量 但它也
  • 如何解码 dtype=numpy.string_ 的 numpy 数组?

    我需要使用 Python 3 解码按以下方式编码的字符串 gt gt gt s numpy asarray numpy string hello nworld gt gt gt s array b hello nworld dtype S1
  • 如何在python中递归复制目录并覆盖全部?

    我正在尝试复制 home myUser dir1 及其所有内容 及其内容等 home myuser dir2 在Python中 此外 我希望副本覆盖中的所有内容dir2 It looks like distutils dir util co
  • 从 Apache 运行 python 脚本的最简单方法

    我花了很长时间试图弄清楚这一点 我基本上正在尝试开发一个网站 当用户单击特定按钮时 我必须在其中执行 python 脚本 在研究了 Stack Overflow 和 Google 之后 我需要配置 Apache 以便能够运行 CGI 脚本
  • PermanentTaskFailure:“模块”对象没有属性“迁移”

    我在 google appengine 上使用 Nick Johnson 的批量更新库 http blog notdot net 2010 03 Announcing a robust datastore bulk update utili
  • 使用 pandas 绘制带有误差线的条形图

    我正在尝试从 DataFrame 生成条形图 如下所示 Pre Post Measure1 0 4 1 9 这些值是我从其他地方计算出来的中值 我还有它们的方差和标准差 以及标准误差 我想将结果绘制为具有适当误差线的条形图 但指定多个误差值
  • Scikit Learn - K-Means - 肘部 - 标准

    今天我想学习一些关于 K means 的知识 我已经了解该算法并且知道它是如何工作的 现在我正在寻找正确的 k 我发现肘部准则作为检测正确的 k 的方法 但我不明白如何将它与 scikit learn 一起使用 在 scikit learn
  • python csv按列转换为字典

    是否可以将 csv 文件中的数据读取到字典中 使得列的第一行是键 同一列的其余行构成列表的值 例如 我有一个 csv 文件 strings numbers colors string1 1 blue string2 2 red string
  • scrapy python 请求未定义

    我在这里找到了答案 code for site in sites Link site xpath a href extract CompleteLink urlparse urljoin response url Link yield Re
  • Python“self”关键字[重复]

    这个问题在这里已经有答案了 我是 Python 新手 通常使用 C 最近几天开始使用它 在类中 是否需要在对该类的数据成员和方法的任何调用前添加前缀 因此 如果我在该类中调用方法或从该类获取值 我需要使用self method or sel
  • Melt() 函数复制数据集

    我有一个这样的表 id name doggo floofer puppo pupper 1 rowa NaN NaN NaN NaN 2 ray NaN NaN NaN NaN 3 emma NaN NaN NaN pupper 4 sop
  • 字母尺度和随机文本上的马尔可夫链

    我想使用 txt 文件中的一本书中的字母频率生成随机文本 以便每个新字符 string lowercase 取决于前一个 如何使用马尔可夫链来做到这一点 或者使用每个字母都有条件频率的 27 个数组更简单 我想使用来自的字母频率生成随机文本
  • Python 中的迭代器 (iter()) 函数。 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 对于字典 我可以使用iter 用于迭代字典的键 y x 10 y 20 for val in iter y print val 当

随机推荐

  • 针对活动目录中的用户进行身份验证?

    我确实有一个 Web 应用程序 其中有一个登录页面 如何针对 Active Directory 用户进行身份验证 截至目前 我能够从活动目录中获取一些属性 这表明我能够使用 LDAP 字符串与 AD 进行通信 我知道不可能从 AD 中提取密
  • 如何传递上下文?

    我想将主要活动的上下文传递给另一个类以创建 Toast 我的主要活动调用一个将删除文件的类 如果文件不存在 删除文件的类将调用 toast 这是我的代码 public class MyActivity extends AppCompatAc
  • php资源是通过引用传递的吗?

    今天我发现除了对象和基元之外 PHP 还有资源 http php net manual en language types resource php 文档说明默认情况下php 按值传递名称 http php net manual en fu
  • 为什么我的闭包函数不想在 if 语句中重新分配其父函数变量?

    我创建了这个工厂函数 用于描述游戏逻辑 我使用内部函数来切换游戏中的玩家 问题是 当我尝试从内部函数中重新分配当前玩家时 它不起作用 当前的玩家永远不会改变 我想这是关于封闭的一些事情 我并没有真正理解 你能向我解释一下我缺少什么吗 这是我
  • 优化 MySQL 查询以避免扫描大量行

    我正在运行一个使用类似于下表的表的应用程序 有一个用于文章的表 还有另一个用于标签的表 我想按文章 ID 获取特定标签订单的最新 30 篇文章 例如 acer 下面的查询将完成这项工作 但它没有正确索引 因为如果有很多与特定标签相关的文章
  • 为什么我未完成的 JavaScript 游戏在第三次死亡后崩溃了?

    Commented because does not work in Sandbox window localStorage Ignore this line Where all my variables have been assigne
  • 获取 R 中帮助文档的(网络)URL?

    在 RStudio 中使用类似内容打开帮助文档时 function 我们如何 轻松 获得这些帮助文档的网页版 目前 我正在寻找一个独特的句子 并用引号搜索它 例如 要查找网络版本 function 我用谷歌搜索了 These functio
  • java中的batchGetItem API错误

    我正在查询的实体有一个HashKey ARangeKey 数字 当我使用batchGetItem就它而言 我收到以下错误 AWS 错误代码 ValidationException AWS 错误消息 一个或多个参数值无效 位置和架构之间的属性
  • React.js 实现菜单[突出显示活动链接]

    以下 React js 代码呈现一个导航栏 其中包含两个名为 about 和 project 的链接 页面加载时 关于 链接处于活动状态并呈红色 单击另一个链接时 导航栏的状态将设置为 项目 关于 链接样式将被设置回来 并且 项目 将显示为
  • 使用 :after 在元素后添加空格 (" ")

    我想在一些内容后面添加一个空格 但是content 似乎不起作用 这是我的代码 h2 after content 这不起作用 但是这确实有效 h2 after content 我究竟做错了什么 事实证明它需要通过转义的 unicode 来指
  • AJAX响应需要转换为blob

    我已经编写了ajax代码来设置请 求标头url并将其转换为 blob 并传递给函数showFile blob The blob然后以 pdf 格式处理并下载 这blob代码中获得的值如下undefined 有人可以帮我解决这个问题吗 var
  • 如何打印文件中的特定行

    我正在尝试打印文件 Scores 中的特定行 即选项 B 这是我的代码 print Option A Show all scores nOption B Show a record nOption Q Quit decision input
  • AWS Lambda 和 RDS 之间间歇性超时

    我们目前正在经历我只能描述为随机间歇AWS Lambda 和 RDS 之间的超时 部署我们的函数并成功运行它们后 它们可以随机切换到超时状态无需更改配置 值得注意的是 我们还在监视数据库连接 并可以确认我们没有遇到最大连接问题 以下是我们设
  • 表单右上角带有X的按钮,如何捕获此事件@C#

    当我使用 X 按钮关闭表单时会触发哪个事件 我想要仅在按下 X 按钮时触发的事件 我知道有一个 FormClosing 事件 但问题是每次关闭表单时都会触发它 当frm close 执行 我不希望这种情况发生 您可以检查 FormClosi
  • Angularjs 使用电子邮件类型重置表单字段

    在 AngularJs 中 似乎当您尝试通过将所有模型设置为空对象来 重置 表单时 如果输入是type email 这并没有得到清除 将其更改为type text 但是可以工作 但是您会在验证时丢失红色边框 是否有办法重置或清除电子邮件类型
  • 按元素长度对字符串数组进行排序

    拥有一个字符串数组 如何更新它 以便其元素按其长度排序 我正在尝试 string arr aa ss a abc arr arr OrderBy aux gt aux Length 所以 我会得到a aa ss abc 但它说 无法隐式转换
  • JVM JIT 诊断工具和优化技巧

    我听说过很多关于 JVM JIT 的内容can这样做 但没有看到很多关于如何分析 JIT 在程序的给定运行中实际执行的操作的信息 有很多使用技巧 XX PrintCompilation and XX PrintOptoAssembly但它会
  • 如何使用 Python Selenium Webdriver 在 Chrome 中加载默认配置文件?

    我想使用 Python 的 webdriver 启动 Chrome 及其默认配置文件 以便 cookie 和站点首选项在会话中保持不变 我怎样才能做到这一点 这就是它最终为我工作的原因 from selenium import webdri
  • 忘记旧的 WiFi Direct 连接

    有没有办法忘记旧的 WiFi Direct 连接 在代码中 我需要这个来更改谁成为群组所有者 我设置 groupOwnerIntent 15 但尚未成为组所有者 如果您只想断开与现有的连接WiFiP2p连接 然后只需调用WiFiP2pMan
  • 将大量数据加载到数组中的最快方法

    我在 stackexchange 中广泛搜索了一个将巨大 2GB dat 文件加载到 numpy 数组中的简洁解决方案 但没有找到合适的解决方案 到目前为止 我设法以非常快的方式 list f open myhugefile0 for li