2d 矩阵的 Numpy 矩阵乘法得到 3d 矩阵

2024-01-13

我有两个 numpy 数组,比如

A: = array([[0, 1],  
            [2, 3],  
            [4, 5]])   

B = array([[ 6,  7],  
           [ 8,  9],  
           [10, 11]])

对于 A 和 B 的每一行,分别表示 Ra 和 Rb,我想计算转置(Ra)*Rb。因此,对于给定的 A 和 B 值,我想要以下答案:

array([[[ 0,  0],  
        [ 6,  7]],  

       [[ 16,  18],  
        [ 24,  27]],  

       [[ 40,  44],  
        [ 50,  55]]])

我编写了以下代码来执行此操作:

x = np.outer(np.transpose(A[0]), B[0])
for i in range(1,len(A)):
    x = np.append(x,np.outer(np.transpose(A[i]), B[i]),axis=0)

有没有更好的方法来完成这项任务。


您可以使用扩展尺寸A and B with np.newaxis/None http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#numpy.newaxis引进broadcasting http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html对于像这样的矢量化解决方案 -

A[...,None]*B[:,None,:]

解释 : np.outer(np.transpose(A[i]), B[i])基本上是在 a 之间进行元素乘法columnar的版本A[i] and B[i]。您正在对中的所有行重复此操作A对应于中的相应行B。请注意,np.transpose()似乎没有产生任何影响np.outer处理预期的元素乘法。

我将在以下内容中描述这些步骤矢量化语言从而实现,就像这样 -

  1. 扩展尺寸A and B来形成3D他们两个的形状,这样我们就可以保持axis=0对齐并保持为axis=0在这两个扩展版本中也是如此。因此,我们需要决定最后两个轴。
  2. 为了引入元素乘法,push axis=1A 的原始 2D 版本为axis=1 in its 3D版本,从而创建一个单例维度axis=2对于扩展版本A.
  3. 最后一个单一维度3D的版本A必须与来自的元素对齐axis=1原版的2D的版本B to let broadcasting发生。因此,扩展版本B会有来自的元素axis=1在其 2D 版本中被推送到axis=2 in its 3D版本,从而创建一个单例维度axis=1.

最后,扩展版本是:A[...,None] & B[:,None,:],乘以 who 就可以得到我们想要的输出。

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

2d 矩阵的 Numpy 矩阵乘法得到 3d 矩阵 的相关文章

随机推荐

  • 在 Rails 中放置用户定义的类的位置

    我正在尝试使用这个类 http robbyonrails com articles 2005 05 11 parsing a rss feed http robbyonrails com articles 2005 05 11 parsin
  • 使用 restart=always 停止失败的容器

    我想停止一个无法重新启动的容器 它的状态是Restarting 该容器有restart always Doing docker stop
  • 使用本机脚本转换器

    我现在正在尝试使用 javascript 来连接 NativeScript 并有一个非常基本的问题 let costFormatter toView value console log Got value return value toMo
  • Delphi Indy 以西里尔文发送 POST 数据

    我想使用 indy 10 通过 delphi 发送西里尔文帖子数据 好吧 我知道如何发送数据 但是当我发送书面或西里尔文的内容时 发布数据响应带有一些编码符号 这是我的代码 http TIDHttp Create nil http Hand
  • 1900 年以来的日子

    我正在使用来自的数据Excel2007解析为PHPExcel http phpexcel codeplex com 日期显示为 1900 年以来的天数 我怎样才能转换为字符串YYYY MM DD 或类似的东西 像这样的事情 应该可以解决问题
  • 创建 BitBucket git 提交钩子?

    我刚刚将一个存储库从 GitHub 移植到 BitBucket 尽管它满足了许多要求 但我发现找到创建 git commit hook 的文档非常困难 最初 我在 CentOS 服务器上有一个由 GitHub 挂钩触发的 ruby 应用程序
  • React-native run-android 花费太多时间

    我在 Windows 上使用 React Native 已有 2 周了 但现在 在我的设备上运行我的应用程序需要太多时间 Scanning 835 folders for symlinks in D workspace react nati
  • Webgl 跨源图像不起作用

    我在跨源图像方面遇到了一些问题 希望您能提供帮助 这里是行为 我有 2 个域 例如 域名1 com 域名2 com 在domain1上我放了很多html5游戏 该域只是游戏的存储库 Domain2是真正的网站 wordpress网站 用户可
  • Celery 收到类型的未注册任务(运行示例)

    我正在尝试跑步example http ask github com celery getting started first steps with celery html id3来自芹菜文档 I run celeryd loglevel
  • Scanner vs. StringTokenizer vs. String.Split

    我刚刚了解了 Java 的 Scanner 类 现在我想知道它如何与 StringTokenizer 和 String Split 进行比较 竞争 我知道 StringTokenizer 和 String Split 只适用于字符串 那么为
  • 使用 Javascript 的无层 Web 框架?

    Links http links lang org是一种类似 Lisp 的函数式 Web 编程语言 框架 可以轻松编写一段代码 并将其编译为服务器端代码 客户端 JS 和 HTML 从而使编写 Web 应用程序变得更加容易 由于客户端和服务
  • Bootstrap Glyphicons 是如何工作的?

    我了解 CSS 和 HTML 的一些基础知识 有时会使用它们 但我不是专业人士 而且我很好奇 Bootstrap Glyphicons 的工作原理 我的意思是 Bootstrap zip 文件中没有图像 那么图像从哪里来呢 在 Bootst
  • 以实例变量和参数为键的 Spring 缓存

    我正在使用 ehcache 来缓存方法结果 键必须是成员对象和方法参数的组合 我的课程看起来像这样 Class A private B b Cacheable value someCache key some key based on B
  • console.log() 在控制台以外的对象上调用

    我记得总是当我想要通过时console log作为某个函数的回调参数 除非我使用bind 绑定方法console to it 例如 const callWithTest callback gt callback test callWithT
  • 使用 gradle 在 intellij 中从 JUnit 4 升级到 JUnit 5

    我想将我的 Gradle 项目测试从 JUnit 4 转换为 JUnit 5 由于有很多测试 我不想同时转换它们 我尝试配置我的build gradle像这样 apply plugin java compileTestJava source
  • 使用 c3 js 从 json 绘制饼图

    以代码为例 我需要生成一个有 4 个分区 site1 site2 的饼图 每个分区对应于其各自的上传值 在上面的代码中我无法实现这一点 我已指定值 upload 我必须指定的确切值是多少 Thanks chart c3 generate d
  • 处理并发文件写入

    我正在开发一个 ASP NET 应用程序 它接受用户输入并将其序列化到文本文件中 现在 当文件仍在写入时出现第二个更新请求时 将生成 IOException 如何处理对此文件的并发更新请求 你可以实现一个生产者 消费者 其中主线程将对象添加
  • NeuQuant.js(JavaScript颜色量化)JS转换中隐藏的bug

    NeuQuant js https github com antimatter15 jsgif blob master NeuQuant js当图像宽度和高度是 100 的倍数时效果很好 300x300 否则的话 显然有一个bug 299x
  • 如何在 Chrome 开发工具中设置元素的 :hover 状态并编辑子元素的样式

    假设我们有这样的风格 parent child parent hover child 两个选择器都为子元素设置样式 我想要的是编辑第二种样式 我点击 parent并设置 hoverChrome 开发者工具中的状态 单击一个 child元素来
  • 2d 矩阵的 Numpy 矩阵乘法得到 3d 矩阵

    我有两个 numpy 数组 比如 A array 0 1 2 3 4 5 B array 6 7 8 9 10 11 对于 A 和 B 的每一行 分别表示 Ra 和 Rb 我想计算转置 Ra Rb 因此 对于给定的 A 和 B 值 我想要以