Numpy 融合乘法和加法以避免浪费内存

2023-11-27

是否可以将两个 ndarray A 和 B 相乘并将结果添加到 C,而无需为 A 乘以 B 创建一个大型中间数组?

Numpy 对于 C = A 乘 B 的情况有 out 关键字参数:

numpy.multiply(A, B, out=C)

C += A 乘以 B 的情况怎么样?


Numpy 一次只支持一项操作。话虽如此,有几种解决方法。

就地运营

最简单的解决方案是通过以下方式使用就地操作+= and *=

import numpy as np

n = 100
b = 5.0

x = np.random.rand(n)
y = np.random.rand(n)

z = b * x
z += y

BLAS

您可以访问底层BLAS程序并手动应用它们。遗憾的是,没有乘加指令,但有“AXPY”指令,它执行

y <- a * x + y

可以通过以下方式调用:

import scipy

axpy = scipy.linalg.blas.get_blas_funcs('axpy', arrays=(x, y))
axpy(x, y, n, b)

Numexpr

另一种选择是使用一些包,例如numexpr它允许您编译表达式:

import numexpr

z = numexpr.evaluate('b * x + y')

Theano

最近,几个机器学习包开始支持编译表达式,其中之一就是 theano。你可以这样做:

import theano

x = theano.tensor.vector()         # declare variable
y = theano.tensor.vector()         # declare variable

out = b * x + y                    # build symbolic expression
f = theano.function([x, y], out)   # compile function

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

Numpy 融合乘法和加法以避免浪费内存 的相关文章

随机推荐

  • 有没有办法在 HTML/JavaScript 中指定多个图像源?

    有没有一种方法可以告诉浏览器查看图像 URL 列表 直到找到一个有效的 URL 纯 HTML 是首选 但我猜这里可能需要 JavaScript 我已经在使用 JQuery 所以这不是问题 编辑 感谢您的回答 我将添加一些说明 我所说的 作品
  • 仅当浏览器为 Firefox 时才使用 javascript 隐藏 html 元素

    如果浏览器仅限火狐浏览器 如何使用javascript隐藏div 检查 Firefox 浏览器 Javascript var FIREFOX Firefox i test navigator userAgent if FIREFOX doc
  • 编译失败,并显示“创建共享对象时不能使用针对‘.rodata.str1.8’的重定位 R_X86_64_32”

    我正在尝试从 VPS 中的 makefile 编译此源代码 但它不起作用 VPS 是 64 Cent 操作系统 这是完整的错误 make gcc c O3 w DLINUX I SDK amx SDK amx c g c O3 w DLIN
  • 将字典插入Python堆

    我正在尝试使用 键 值 构建一个堆 因此键是数字 值是字典 import heapq heap dic val 1 number 1 val 2 number 2 val 3 number 3 insetToHeap 2 dic heapq
  • 访问相邻组件/字段的最佳方式

    我正在寻找一种访问组件 字段的方法 这些组件 字段要么与访问的项目位于同一项目数组中 要么甚至仅位于同一父项目数组中 最后一个只是一个选项 在 ExtJS3 中 这很容易 只需定义一个ref在所有者容器中 但我没有在 ExtJS4 中找到类
  • R 根据行中的值在列中重复

    我有一个如下所示的数据框 Name School Weight Days Antoine Bach 0 03 5 Antoine Ken 0 02 7 Barbara Franklin 0 04 3 我想获得如下输出 Name School
  • Python sys.path - 附加 PYTHONPATH

    开始之前 我已经尝试完成它有一段时间了 但我没有运气 我正在尝试创建自己的 python 包 我将在项目中的单独文件中导入其中的模块 我尝试通过 sys 将项目的目录添加到 pythonpath 但 mod wsgi 仍然无法识别它 imp
  • 使用本地通知 ios 打开 url

    我已经搜索了一段时间试图找到答案 但似乎找不到 我想做的是让我的应用程序在后台运行时发送本地通知 并且当用户打开通知时 会将他们带到网站 我已全部设置完毕 但它一直打开应用程序而不是访问网站 我的问题是 这可能吗 如果是这样 您能看看我下面
  • 从源代码构建 Python3.7.3 缺少“_ctypes”

    我正在尝试从源代码构建Python 3 7 3ensurepip但我收到此错误 ModuleNotFoundError No module named ctypes 网上所有的答案都这么说libffi dev是需要的 但我已经安装了它 但它
  • Mobile Safari - 当最后一次触摸被删除时,“touchend”事件没有触发?

    我试图捕获的 手势 是当但仅当元素 其他或相同 已经触摸时的点击 因此 触摸 1 按下按钮 同时触摸 2 点击所选选项 触摸 1 释放并按下按钮 我遇到的问题是最后一点 当我释放最后一个手指时 touchend 事件没有被触发 那么我没有办
  • Android手机可以使用windows DirectX库吗?

    我有一些使用 Windows 中的 Direct X 库绘制游戏屏幕的函数 因此 我尝试使用 ndk 来使用 Android 手机中的功能 但我有一些问题 使用Java的Android手机可以识别Direct X功能吗 如果可以的话 我必须
  • git add --interactive“您编辑的块不适用”

    我正在尝试使用git add interactive有选择地向我的索引添加一些更改 但我不断收到 您编辑的大块不适用 再次编辑 消息 即使我选择 e 选项 我也会收到此消息 并立即保存 关闭我的编辑器 换句话说 如果根本不编辑该块 该补丁就
  • Rabbitmq Consumer_Timeout 行为未按预期工作?

    我很难证明consumer timeout设置正在按预期工作 我可能做错了或者误解了consumer timeout行为 我所有的测试代码都可以在这里找到 https github com Rafarel rabbitmq tests 基本
  • instance_eval 的块参数 - 已记录?目的?

    刚刚意识到instance eval yields self作为关联块的参数 1 9 2 版本中的错误除外 http www ruby forum com topic 189422 1 9 3p194 003 gt class C end
  • 如何从 LINQ to XML 中的 XElement 读取特定元素值

    我有一个XElement其中有这样的内容
  • HTML:如何创建“另存为”按钮?

    在浏览器中 当您想要保存当前正在查看的 HTML 页面时 通常会转到 文件 菜单并单击 另存为 我可以在 HTML 页面底部添加一个具有相同功能的小按钮吗 因此 我希望我的用户能够单击按钮将页面保存到磁盘上 而不是转到 文件 菜单 gt 另
  • EF Core 2.0 Identity - 添加导航属性

    在 EF Core 2 0 中 默认情况下不包含 Identity 导航属性 因此在升级后 我添加了它们 因此 对于用户和角色之间的多对多关系以及角色和 RoleClaim 之间的一对多关系 我添加了以下导航属性 public class
  • 如何扩展Spring注解@Transactional

    我必须在我的网络应用程序中使用 3 个不同的事务管理器 所以我根据以下内容编写了自己的注释弹簧参考 第 10 5 6 3 节自定义快捷方式注释 一个注释 用于使用一个特定的事务管理器 如下所示 import java lang annota
  • 使用 PHP 删除文件夹中的所有文件?

    例如 我有一个名为 Temp 的文件夹 我想使用 PHP 删除或刷新该文件夹中的所有文件 我可以这样做吗 files glob path to temp get all file names foreach files as file it
  • Numpy 融合乘法和加法以避免浪费内存

    是否可以将两个 ndarray A 和 B 相乘并将结果添加到 C 而无需为 A 乘以 B 创建一个大型中间数组 Numpy 对于 C A 乘 B 的情况有 out 关键字参数 numpy multiply A B out C C A 乘以