如何在 numpy 中向量化多个矩阵乘法?

2024-03-02

为了理解我的意思,我有两个数据点:

x_0 = np.array([0.6, 1.4])[:, None]
x_1 = np.array([2.6, 3.4])[:, None]

还有一个 2x2 矩阵:

y = np.array([[2, 2], [2, 2]])

如果我表演x_0.T @ y @ x_0, I get array([[ 8.]])。相似地,x_1.T @ y @ x_1回报array([[ 72.]]).

但是有没有一种方法可以一次性执行这两种计算,而不需要 for 循环呢?显然,这里的加速可以忽略不计,但我正在处理比这里提供的更多的数据点。


With x作为列堆叠版本x_0, x_1等等,我们可以使用np.einsum https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.einsum.html -

np.einsum('ji,jk,ki->i',x,y,x)

与混合np.einsum and matrix-multiplcation -

np.einsum('ij,ji->i',x.T.dot(y),x)

如前所述,x假设是列堆叠的,如下所示:

x = np.column_stack((x_0, x_1))

运行时测试 -

In [236]: x = np.random.randint(0,255,(3,100000))

In [237]: y = np.random.randint(0,255,(3,3))

# Proposed in @titipata's post/comments under this post
In [238]: %timeit (x.T.dot(y)*x.T).sum(1)
100 loops, best of 3: 3.45 ms per loop

# Proposed earlier in this post
In [239]: %timeit np.einsum('ji,jk,ki->i',x,y,x)
1000 loops, best of 3: 832 µs per loop

# Proposed earlier in this post
In [240]: %timeit np.einsum('ij,ji->i',x.T.dot(y),x)
100 loops, best of 3: 2.6 ms per loop
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 numpy 中向量化多个矩阵乘法? 的相关文章

随机推荐

  • Json和Xml序列化,哪个性能更好?

    我必须在文件中存储一些配置信息 在 C 代码中 配置数据按类表示 在文件中我将以 json 或 xml 格式保存此类 那么 序列化json和xml哪个性能最好呢 好吧 我没有猜测 而是有了答案 这是测试程序 class Program st
  • 适合初学者的 SAML 简单示例

    我是 SAML v2 0 技术的初学者 我获得了理论知识 但我在 Google 上没有找到任何示例 任何人都可以为我提供简单的 SAML for v2 0 的分步示例 到目前为止我已经完成了理论部分 即它支持单点登录 and我也了解服务提供
  • 如何让 Wicket 7 与 Java 8 中的 java.time 配合使用?

    我有很多 bean 并且都使用 LocalDate 和 LocalDateTime Wicket 中的 DateTextField 和所有其他小部件 如 DatePicker 仅适用于 java util Date 有什么办法可以injec
  • 从字符串列表中找到与给定字符串匹配的最佳子集

    我有一根绳子 s mouse 和一个字符串列表 sub strings m o se e 我需要找出与 s 匹配的列表的 sub strings 的最佳和最短匹配子集是什么 做这个的最好方式是什么 理想的结果是 m o se 因为它们一起拼
  • 使用javascript检查用户是否是第一次访问

    我正在尝试构建一个系统 如果用户第一次登陆某个页面 则不会发生任何事情 但如果同一用户再次访问 则该页面不应加载 而是应该转到不同的 URL function session if document cookie indexOf visit
  • 从文本文件中删除前 N 个字节

    是否有任何函数调用或简单的方法可以从 golang 中的文本文件中删除前 N 个字节 假设该文件被各种 go 例程有争议地附加 同时我想删除文件的前 N 个字节 你需要做f Seek要跳过第一个字节并进行常规读取 请参见示例 package
  • 如何获得 mallet 中某个主题的概率分布?

    使用木槌 我可以获得特定数量的主题及其单词 如何确保主题词符合概率分布 即总和为一 例如 如果我按如下方式运行它 如何使用 mallet 给出的输出来确保主题 0 的主题词的概率加起来为 1 mallet train topics inpu
  • 在Java中使用线程同时执行多个方法[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 就我而言 我有三个不同类别的三种方法
  • 在hibernate标准中使用mysql“按情况排序”

    我正在使用 Hibernate 4 3 1 Final Mysql 5 5 并且我想在某些连接实体上使用 按案例排序 的顺序逻辑 我希望实现的目标的纯 sql 表示如下 select adv id adv published date fr
  • 如何使用 jQuery 从 检索值?

    我必须隐藏输入字段 例如
  • 通过 sql 表中的 100,000 条记录进行通配符搜索的最佳优化技术是什么

    我正在开发 ASP NET MVC 应用程序 该应用程序有 200 个用户使用 这些 用户不断地 每 5 分钟 从 100 000 个项目的列表中搜索一个项目 该列表每个月都会增加 1 2 此 100 000 个项目的列表存储在 SQL S
  • ASP.NET Core AuthorizationHandler 未被调用

    我正在尝试添加一些基于自定义角色的authorisation 但我无法 将启动配置为调用我的AuthorizationHandler 我在GitHub上找到了一些相关信息 here https github com dotnet aspne
  • 我应该如何在这个 2d Java 游戏中实现跳跃/重力/下落

    所以这是我的Player类 我想在空格键上跳转的对象 我只是不知道从哪里开始 我可以在互联网上阅读与我相关的任何好的资源吗 任何帮助都很棒 谢谢 package com zetcode import java awt Color impor
  • 填充与有边距的子项

    让我们首先说我理解盒子模型 在我作为开发人员的短暂时间里 我一直试图非常严格地遵循语义 html 并使用响应式设计实践 我最近在一家新公司找到了一份初级开发人员的工作 而我的先生则坚决反对填充 就像他无论如何都不希望它被使用一样 他希望我在
  • 使用 googletest 进行基准测试?

    背景 如果不感兴趣 请跳到下面的问题 我有一个运行三种状态的模拟器 单线程启动 I O 正常 多线程内存中 CPU 限制模拟阶段 I O 不正常 后模拟 后连接单线程阶段 I O 正常 有没有搞错 在标准测试期间 CPU 使用率从100 降
  • 地图上的条形图

    我正在尝试在地图上绘制垂直条形图 我在网上查看了示例 但不知何故无法做到 我的数据目前采用以下格式 University Count Category lat long 这是我尝试执行的代码 library ggplot2 library
  • 我的环境变量是什么? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想在 bash 中找到我的环境变量 它们存储在某个地方吗 我不确定这是否是您想要的 但请尝试printenv这将显示您所有的环境变量 关于它们的存储
  • 验证失败后移动文件 (Java)

    我们正在验证 XML 文件 根据验证结果 我们必须将文件移动到不同的文件夹中 当 XML 有效时 验证器会返回一个值 我们可以毫无问题地移动文件 当 XML 根据架构无效时 也会发生同样的情况 然而 如果 XML 格式不正确 验证器会抛出异
  • 链接库时默认目录上的 gcc 或 g++ 路径搜索顺序

    我见过this https stackoverflow com a 5817315 7724939文章并了解到 在命令行上指定的目录 L在默认目录之前搜索选项 中指定的目录 L按照在命令行中指定的顺序进行搜索 问题是 默认目录有搜索顺序吗
  • 如何在 numpy 中向量化多个矩阵乘法?

    为了理解我的意思 我有两个数据点 x 0 np array 0 6 1 4 None x 1 np array 2 6 3 4 None 还有一个 2x2 矩阵 y np array 2 2 2 2 如果我表演x 0 T y x 0 I g