查询保存为 npz 的 NumPy 数组的 NumPy 数组很慢

2023-11-29

我生成一个 npz 文件,如下所示:

import numpy as np
import os

# Generate npz file
dataset_text_filepath = 'test_np_load.npz'
texts = []
for text_number in range(30000): 
    texts.append(np.random.random_integers(0, 20000, 
                 size = np.random.random_integers(0, 100)))
texts = np.array(texts)
np.savez(dataset_text_filepath, texts=texts)

这给了我这个 ~7MiB npz 文件(基本上只有 1 个变量texts,这是 NumPy 数组的 NumPy 数组):

enter image description here

我加载的numpy.load():

# Load data
dataset = np.load(dataset_text_filepath)

如果我按如下方式查询,则需要几分钟:

# Querying data: the slow way
for i in range(20):
    print('Run {0}'.format(i))
    random_indices = np.random.randint(0, len(dataset['texts']), size=10)
    dataset['texts'][random_indices]

而如果我按如下方式查询,则需要不到5秒的时间:

# Querying data: the fast way
data_texts = dataset['texts']
for i in range(20):
    print('Run {0}'.format(i))
    random_indices = np.random.randint(0, len(data_texts), size=10)
    data_texts[random_indices]

为什么第二种方法比第一种方法快这么多?


dataset['texts']每次使用时都会读取该文件。load of a npz仅返回文件加载器,而不返回实际数据。它是一个“惰性加载器”,仅在访问时加载特定数组。这load文档可能更清楚,但他们说:

- If the file is a ``.npz`` file, the returned value supports the context
  manager protocol in a similar fashion to the open function::

    with load('foo.npz') as data:
        a = data['a']

  The underlying file descriptor is closed when exiting the 'with' block.

并从savez:

 When opening the saved ``.npz`` file with `load` a `NpzFile` object is
returned. This is a dictionary-like object which can be queried for
its list of arrays (with the ``.files`` attribute), and for the arrays
themselves.

更多详情请参阅help(np.lib.npyio.NpzFile)

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

查询保存为 npz 的 NumPy 数组的 NumPy 数组很慢 的相关文章

随机推荐

  • C/C++ 链接器 CALL16 reloc at xxxxx 不针对全局符号

    我在链接时收到这些错误 这两条消息都与同一个目标文件有关 CALL16 reloc at 0x5f8 not against global symbol and could not read symbols Bad value 第二条消息似
  • 如何指定 python pip 的安装顺序?

    我正在使用 Fabric 0 9 4 pip 0 8 2 我需要为多个服务器安装一些 python 模块 所有服务器都有旧版本的 setuptools 0 6c8 需要升级 pymongo 模块 Pymongo 需要 setuptools
  • 错误 java.lang.RuntimeException:存根!在 Android 中使用 Fitnesse 测试

    我正在尝试使用创建一个测试装置Fitnesse框架 我想测试一个从服务器检索数据的函数 RESTFUL 服务 我的测试用例非常简单 public class FriendListActivityFixture extends ColumnF
  • 使用 Gmail API 的可续传上传附加文件

    我正在尝试使用 Gmail 的可恢复选项将附件上传到电子邮件 文档参考 https developers google com gmail api guides uploads resumable 目前 我可以发送带有可恢复 URI 的电子
  • Bootstrap scrollspy 仅在第二次单击时获取高度偏移

    我用 bootstrap 3 2 1 制作了一个页面 并在该页面中使用了scrollspy 在第一次单击菜单中 滚动页面的偏移高度不起作用 但第二次单击后 偏移高度起作用 该代码可以在浏览器中运行 但当第一次单击标题 2 或标题 3 或标题
  • ActiveAdmin:按关联计数排序

    我有以下型号 class User lt ActiveRecord Base has many reviews end class Review lt ActiveRecord Base belongs to user end 我想按照每个
  • 将 System.Net.WebRequest 与已知 IP 端点一起使用

    我有大量已解析为 IP 地址的 DNS 名称 对于这个集合 我需要从其中下载 HTML 这是一个非常大的清单 我需要尽可能高效地完成它 我在用着System Net HttpWebRequest从每个域下载 HTML HttpWebRequ
  • 在 System.Drawing 中找不到“点”

    我所知 Point存在于命名空间中系统图 但 Visual Studio 找不到它 using System Drawing class Flower public Point Location get private set 错误 找不到
  • 图像 (2D) 的 PSF(点扩散函数)

    我是图像分析 使用 Python 的新手 我想对我的数据 CT 扫描 应用 richardson lucy 反卷积 来自 skimage 为此 我通过特定的软件以 体素数 来估计PSF 它的值大约是 6 73 体素 但我不知道如何将它用作函
  • 如何在Python中获取当前模块属性的引用

    我想要做的在命令行中看起来像这样 gt gt gt import mymodule gt gt gt names dir mymodule 我如何获得对中定义的所有名称的引用mymodule从内部mymodule itself 像这样的东西
  • PHP cookie 有一个刷新延迟[重复]

    这个问题在这里已经有答案了 可能的重复 Cookie只在刷新时显示 我正在尝试设置一个基本的 PHP cookie 它会记住使用的颜色主题 然而 当我测试它时 颜色主题的设置和显示之间存在一次刷新滞后 澄清一下 我有一个选择表单 允许用户选
  • Swift 编译器挂起!这是一个错误吗?

    有一次 当我正在开发 Swift 项目时 Xcode 的状态栏中出现了 编译 Swift 源代码 消息 无论等多久 编译都没有完成 我回滚了最近的更改 很快意识到让编译器感到困惑的是一个非常简单的枚举结构 下面是一个说明该问题的 Playg
  • nodeJS将数据插入PostgreSQL错误

    我在使用 NodeJS 和 PostgreSQL 时遇到了一个奇怪的错误 我希望你能帮助我 我有大量的数据集 大约有 200 万个条目 我想将它们插入到数据库中 一份数据由 4 列组成 id string points float mid
  • plone 中的文件是否存在与修订版本一样多的副本?

    在 plone 中 如果文件 或任何内容 被修改 例如 4 次 则存在多少个物理副本 我正在使用 plone 4 1 其中文件和图像存储在文件系统上 内容对象由多个持久记录组成 对于文件系统上包含二进制 blob 文件的图像和文件 当内容对
  • 如何获取非公开成员的值

    如何在 C 中使用 OPCDA NET 获取 OPCGroup 的非公共成员的值 private void DataChangeHandler object sender DataChangeEventArgs e try object o
  • 当月剩余天数

    指定月份剩余天数 如何查找当月剩余天数 示例 如果当前月份是 11 月 今天的日期是 16 11 2016 一个月的天数 经过的天数 我想动态地做 在我的例子中 30 16 14 declare date date set date 16
  • Outlook 加载项 API 不会在 Firefox/Chrome 上持续触发 ItemChange 事件

    我们已在 Outlook 加载项的清单中启用任务窗格固定 并注意到除了 Windows Outlook 2016 客户端之外 现在 Outlook Office Online 中也提供固定支持 但是 那ItemChange切换邮件项目时 事
  • 无法在单个 UIViewController 中隐藏状态栏

    我想在单视图控制器中隐藏状态栏 但我的代码不起作用 我正在使用下面的代码 BOOL prefersStatusBarHidden return YES void viewWillApper BOOL animated UIApplicati
  • Undersore 的 _.now 如何工作?

    它看起来不像是用 JavaScript 编写的 如果你输入 now在控制台中 你只能得到 function now native code 通常只有当您尝试查看某些内部工作方式对浏览器不可见的内置方法时 您才会明白这一点 setTimeou
  • 查询保存为 npz 的 NumPy 数组的 NumPy 数组很慢

    我生成一个 npz 文件 如下所示 import numpy as np import os Generate npz file dataset text filepath test np load npz texts for text n