如何使用单独调用函数的值快速填充 numpy 数组

2024-03-29

我想用生成的值填充 numpy 数组。这些值由生成器函数生成。数组长度不太长,通常

到目前为止,我已经可以使用 vanilla python 做到这一点:

def generate():
   return generated_data

array = np.asarray([generate() for _ in range(array_length)])

我也尝试过使用np.full(shape, fill_value):

np.full((array_length, generated_data_size), generate())

但这就是所谓的generate()仅运行一次,而不是对数组中的每个索引运行一次。

我也尝试过np.vectorize(),但我无法让它生成适当形状的数组。


NumPy 无法加速重复调用未设计用于与 NumPy 交互的函数的过程。

优化此问题的“numpy 的奇特用法”方法是手动重写您的generate函数使用 NumPy 运算生成整个输出数组,而不是仅支持单个值。这就是 NumPy 的工作原理,以及 NumPy 的工作原理has上班;任何涉及对每个数组单元反复调用 Python 函数的解决方案都将受到 Python 开销的限制。 NumPy 只能加速 NumPy 中实际发生的工作。

如果NumPy提供的操作太有限而无法重写generate就它们而言,有诸如重写之类的选项generate与 Cython 一起,或使用@numba.jit在上面。这些主要有助于涉及从一个循环迭代到下一个循环迭代的复杂依赖关系的计算;它们对您无法重写的外部依赖项没有帮助。

如果你不能重写generate,您所能做的就是尝试优化将返回值放入数组的过程。根据数组大小,您可以通过重用单个数组对象来节省一些时间:

In [32]: %timeit x = numpy.array([random.random() for _ in range(10)])
The slowest run took 5.13 times longer than the fastest. This could mean that an
 intermediate result is being cached.
100000 loops, best of 5: 5.44 µs per loop
In [33]: %%timeit x = numpy.empty(10)
   ....: for i in range(10):
   ....:     x[i] = random.random()
   ....: 
The slowest run took 4.26 times longer than the fastest. This could mean that an
 intermediate result is being cached.
100000 loops, best of 5: 2.88 µs per loop

但对于更大的数组,好处就消失了:

In [34]: %timeit x = numpy.array([random.random() for _ in range(100)])
10000 loops, best of 5: 21.9 µs per loop
In [35]: %%timeit x = numpy.empty(100)
   ....: for i in range(100):
   ....:     x[i] = random.random()
   ....: 
10000 loops, best of 5: 22.8 µs per loop
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用单独调用函数的值快速填充 numpy 数组 的相关文章

  • 在 PhotoImage 下调整图像大小

    我需要调整图像大小 但我想避免使用 PIL 因为我无法使其在 OS X 下工作 不要问我为什么 无论如何 因为我对 gif pgm ppm 感到满意 所以 PhotoImage 类对我来说没问题 photoImg PhotoImage fi
  • 烧瓶 - 404 未找到

    我是烧瓶开发的新手 这是我在烧瓶中的第一个程序 但它向我显示了这个错误 在服务器上找不到请求的 URL 如果您输入了网址 请手动检查拼写并重试 这是我的代码 from flask import Flask app Flask name ap
  • 从字典中绘制直方图

    我创建了一个dictionary计算 a 中出现的次数list每个键的内容 我现在想绘制其内容的直方图 这是我想要绘制的字典的内容 1 27 34 1 3 72 4 62 5 33 6 36 7 20 8 12 9 9 10 6 11 5
  • 无法在我的程序中使用 matplotlib 函数

    我正在 Windows 10 中运行 Anaconda 安装 conda 版本 4 3 8 这是我尝试在 python 命令行中运行的代码 import matplotlib pyplot as plt x 1 2 3 4 y 5 6 7
  • 如何仅注释堆积条形图的一个类别

    我有一个数据框示例 如下所示 data Date 2021 07 18 2021 07 19 2021 07 20 2021 07 21 2021 07 22 2021 07 23 Invalid NaN 1 1 NaN NaN NaN N
  • Python:“直接”调用方法是否实例化对象?

    我是 Python 新手 在对我的对象进行单元测试时 我注意到一些 奇怪 的东西 class Ape object def init self print ooook def say self s print s def main Ape
  • Jupyter笔记本突然变得很慢

    我以前在anaconda环境下运行jupyter运行得很好 显示警告后 IOPub data rate exceeded The notebook server will temporarily stop sending output to
  • 如何让 Streamlit 每 5 秒重新加载一次?

    我必须每 5 秒重新加载 Streamlit 图表 以便在 XLSX 报告中可视化新数据 如何实现这一目标 import streamlit as st import pandas as pd import os mainDir os pa
  • 导入目录下的所有模块

    有没有办法导入当前目录中的所有模块 并返回它们的列表 例如 对于包含以下内容的目录 mod py mod2 py mod3 py 它会给你
  • python中将对象数据类型转换为字符串问题

    如何将对象数据类型结构转换为字符串数据类型 下面的方法不起作用 该列仍然存在object转换为字符串后 astype import pandas as pd df pd DataFrame country A B C D E df dtyp
  • 将 Python Selenium 输出写入 Excel

    我编写了一个脚本来从在线网站上抓取产品信息 目标是将这些信息写入 Excel 文件 由于我的Python知识有限 我只知道如何在Powershell中使用Out file导出 但结果是每个产品的信息都打印在不同的行上 我希望每种产品都有一条
  • 操作错误:尝试在 ubuntu 服务器中写入只读数据库

    我正在使用 FlaskApp 运行mod wsgi and apache2在 Ubuntu 服务器上 我尝试运行烧瓶应用程序localhost成功 然后部署到ubuntu服务器上 但是当我尝试更新数据库时 出现错误 Failed to up
  • Python 或 C 语言中的 Matlab / Octave bwdist()

    有谁知道 Matlab Octave bwdist 函数的 Python 替代品 此函数返回给定矩阵的每个单元格到最近的非零单元格的欧几里得距离 我看到了一个 Octave C 实现 一个纯 Matlab 实现 我想知道是否有人必须用 AN
  • 无法将matplotlib安装到pycharm

    我最近开始使用Python速成课程学习Python编程 我陷入困境 因为我无法让 matplotlib 在 pycharm 中工作 我已经安装了pip 我已经通过命令提示符使用 pip 安装了 matplotlib 现在 当我打开 pych
  • RuntimeError(f"目录 '{directory}' 不存在") RuntimeError: 目录 'app/static' 不存在

    当我运行 server py 文件时出现错误 File C Users nawin AppData Local Programs Python Python38 lib site packages starlette staticfiles
  • Python matplotlib:将轴标签/图例从粗体更改为常规粗细

    我正在尝试制作一些出版质量的图 但遇到了一个小问题 默认情况下 matplotlib 轴标签和图例条目的权重似乎比轴刻度线重 是否有办法强制轴标签 图例条目与刻度线的重量相同 import matplotlib pyplot as plt
  • 在 anaconda 环境下运行 qsub

    我有一个程序 通常在 Linux 的 conda 环境中运行 因为我用它来管理我的库 指令如下 source activate my environment python hello world py 我怎样才能跑你好世界 py在与 PBS
  • 在不同的 GPU 上同时训练多个 keras/tensorflow 模型

    我想在 Jupyter Notebook 中同时在多个 GPU 上训练多个模型 我正在使用 4GPU 的节点上工作 我想将一个 GPU 分配给一个模型并同时训练 4 个不同的模型 现在 我通过 例如 为一台笔记本选择 GPU import
  • python 日志记录替代方案 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 蟒蛇记录模块 http docs python org library logging html使用起来
  • 当训练和测试的特征数量不同时,如何处理生产环境中的One-Hot Encoding?

    在做某些实验时 我们通常在 70 上进行训练 在 33 上进行测试 但是 当您的模型投入生产时会发生什么 可能会发生以下情况 训练集 Ser Type Of Car 1 Hatchback 2 Sedan 3 Coupe 4 SUV 经过

随机推荐

  • C# 的磁盘支持字典/缓存

    我正在寻找一种用于缓存大量数据的解决方案 相关问题但针对不同语言 Python 基于磁盘的字典 https stackoverflow com questions 226693 python disk based dictionary 磁盘
  • Backbone.js 和 Rails - 如何处理来自 Backbone 模型的参数?

    在标准 Rails 控制器中 我将创建如下记录 user User new params user 这假设传入的表单参数是嵌套的 我一直在使用 Backbone js 我注意到默认情况下 Backbone 不会像普通 Rails 表单那样嵌
  • UICollectionView 委托方法 cellForItemAtIndexPath:indexPath 未从 sizeForItemAtIndexPath 调用

    当我打电话时 collectionView cellForItemAtIndexPath indexPath 从内部 collectionView layout sizeForItemAtIndexPath 那么委托方法不会被触发 知道为什
  • 从另一个项目将外部资源添加到gradle中的jar中

    我有一个项目 有一个 资源 库 不是基于java的 它仅包含多个 java 项目使用的文件层次结构 library files binaries etc 在我的一个java项目中 我想将这些文件包含在组装的jar文件中 current de
  • LOH 碎片 - 2015 年更新

    有大量有关 NET LOH 的信息 并且已在各种文章中进行了解释 不过 有些文章似乎缺乏一点精确性 过时的信息 In Brian Rasmussen 的回答 2009 Microsoft 项目经理 https stackoverflow c
  • 如何增加 swift int 枚举

    我有一个快速枚举 enum MainState Int case NotStarted case Init case AskWhatToText case RecordWhatToText var state MainState NotSt
  • ActiveRecord查询别名字段名输出

    假设我有一张桌子World 我有一个名为foo表内 我想查询的是World表并选择foo 但我想将其别名为bar在后续转换为 JSON 输出时 有什么方法可以为这一 ActiveRecord 查询设置字段名称的别名吗 不希望在整个应用程序中
  • 从文本文件中读取矩阵并将其存储在二维数组中

    我一直在尝试将矩阵输入存储在数组中的文本文件中 但它显示了特殊的输出 这是代码 include
  • WinRT 组件能否在 Windows 7 中工作[重复]

    这个问题在这里已经有答案了 我读到Windows有来自Windows 8的新API 它被称为WinRT 我打算使用它 但我担心Windows 7 My Goal 我计划构建一种新的编程语言并使用它 但为了使其可用 它必须具有 Gui 编程
  • 学说:两个数据库中两个实体之间的关系

    我正在使用 MySQL 和 Doctrine 2 与 Symfony 3 我想在两个独立数据库中的两个实体之间建立多对多关系 我认为 Doctrine 无法处理这个问题 至少不能以原生方式处理 无论如何 为了执行此操作 我正在使用schem
  • 使用模板:首先解决运算符还是首先解决转换?

    我昨天看到了一些有趣的编译器行为 我想我明白为什么会发生这种情况 但我想确定一下 所以 我不会写我的推理 只写事实 请注意 这不是我包含的拼写错误vector代替string 我是故意这样做的 这样编译器就无法理解 std string 是
  • 如何使用计时器对图像应用淡入淡出过渡效果?

    我正在尝试在两个 PictureBox 控件之间进行淡入淡出过渡 我使用计时器来更改两个 PictureBox 的不透明度GetPixel and SetPixel每当时间流逝 在这个阶段 问题是这段代码引发了异常 System Inval
  • for循环的优化

    我正在编写一些 C 代码 目前应该尽可能快地运行 通常以 100 的速度占用单个核心约 25 分钟 我需要代码保持单核 因为跨多个核运行此代码的好处不会像同时多次运行此项目那样大 有问题的代码如下 public Double UpdateS
  • System.Reflection.TargetInitationException 未被捕获

    解决方案后添加的注释 在反射调用的方法中抛出了 AccessViolationException 这就是无法捕获 TargetInitationException 的原因 注意 这是在 IDE 外部 引用的问题不相同 https stack
  • 如何在 JFileChooser 中指定默认的新目录名称?

    在 Java 程序中 我想显示一个 JFileChooser 用户只需选择一个将写入多个输出文件的目录名 所以 mychooser setFileSelectionMode JFileChooser DIRECTORIES ONLY 这很容
  • AssertionError:unstack() 数据帧时 blk ref_locs 中存在间隙

    我正在尝试 unstack Pandas 数据框中的数据 但我不断收到此错误 我不知道为什么 这是到目前为止我的代码和我的数据示例 我尝试修复它是删除 voteId 不是数字的所有行 这不适用于我的实际数据集 当我部署代码时 在 Anaco
  • 如何在android中使用Room Persistence Library查询嵌套的嵌入式对象?

    考虑我有 3 个类用户 地址 位置 class Address public String street public String state public String city ColumnInfo name post code pu
  • 在 Coq 中查找 ++ 等定义和符号

    我们如何获得这些符号的定义 类型 例如 or of List 我努力了 Search Search Search SearchAbout and Check Check Check 然而它们都不起作用 SearchAbout 确实显示了一些
  • JNI JVM 调用类路径

    我正在使用 Cygwin 编写一个小型 C 程序 该程序启动 Java 虚拟机 我使用的库需要 POSIX 环境 到目前为止 只要将所有类放在与可执行文件相同的文件夹中 我就可以让它工作 但是 我想指定一个实际的 JAR 文件 其中包含我要
  • 如何使用单独调用函数的值快速填充 numpy 数组

    我想用生成的值填充 numpy 数组 这些值由生成器函数生成 数组长度不太长 通常 到目前为止 我已经可以使用 vanilla python 做到这一点 def generate return generated data array np