在Python中沿特定轴广播操作

2024-05-03

在Python中,假设我有一个正方形numpy matrix X,尺寸n x n我有一个numpy vector a尺寸的n.

很简单,我想执行广播减法X - a,但我希望能够指定沿哪个维度,以便我可以指定沿轴 0 或轴 1 进行减法。

如何指定轴?


让我们生成带有随机元素的数组

Inputs :

In [62]: X
Out[62]: 
array([[ 0.32322974,  0.50491961,  0.40854442,  0.36908488],
       [ 0.58840196,  0.1696713 ,  0.75428203,  0.01445901],
       [ 0.27728281,  0.33722084,  0.64187916,  0.51361972],
       [ 0.39151808,  0.6883594 ,  0.93848072,  0.48946276]])

In [63]: a
Out[63]: array([ 0.01278876,  0.01854458,  0.16953393,  0.37159562])

一、减法axis=1

我们一起做减法axis=1,即我们想要减去a从第一行开始X,第二行X等等。为了便于检查正确性,我们只使用第一行X :

In [64]: X[0] - a
Out[64]: array([ 0.31044099,  0.48637503,  0.23901049, -0.00251074])

再深入一点,那里发生的事情是:

X[0,0] - a[0], X[0,1] - a[1], X[0,2] - a[2] , X[0,3] - a[3]

所以,我们匹配第二个轴X第一个轴为a。自从,X is 2D and a is 1D,两者已经对齐:

X :  n x n
a :      n

所以,我们只需做X-a得到所有减法:

In [65]: X-a
Out[65]: 
array([[ 0.31044099,  0.48637503,  0.23901049, -0.00251074],
       [ 0.5756132 ,  0.15112672,  0.5847481 , -0.3571366 ],
       [ 0.26449405,  0.31867625,  0.47234523,  0.1420241 ],
       [ 0.37872932,  0.66981482,  0.76894679,  0.11786714]])

最后看看我们是否有X[0] - a之前获得的在这里。

重要的提示 :这里需要注意的是aelems 将沿着一个轴,并且沿着该轴进行减法,并且广播将沿着另一轴进行。所以,在这种情况下,即使减法是沿着axis=1, 要点a将会沿途播出axis=0.

二.减法沿axis=0

同样,我们进行减法axis=0,即我们想要减去a从第一栏开始X,第二列X等等。为了便于检查正确性,我们只使用第一列X :

In [67]: X[:,0]-a
Out[67]: array([ 0.31044099,  0.56985738,  0.10774888,  0.01992247])

再深入一点,那里发生的事情是:

X[0,0] - a[0], X[1,0] - a[1], X[2,0] - a[2] , X[3,0] - a[3]

所以,我们匹配第一个轴X第一个轴为a。自从,X is 2D and a is 1D,我们需要扩展a to 2D并将所有元素保留在其第一个轴上a[:,None] :

X          :  n x n
a[:,None]  :  n x 1

所以,我们做X-a[:,None]得到所有减法:

In [68]: X-a[:,None]
Out[68]: 
array([[ 0.31044099,  0.49213085,  0.39575566,  0.35629612],
       [ 0.56985738,  0.15112672,  0.73573745, -0.00408557],
       [ 0.10774888,  0.16768691,  0.47234523,  0.34408579],
       [ 0.01992247,  0.31676379,  0.5668851 ,  0.11786714]])

最后看看我们是否有X[:,0] - a之前获得的在这里。

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

在Python中沿特定轴广播操作 的相关文章

随机推荐

  • 如何在ActiveAdmin中过滤IS NULL?

    我有一个带有名为 map id 的整数列的表 我想添加一个 activeadmin 过滤器来过滤此列是否为 NULL 或 IS NOT NULL 这如何实施 我尝试了以下过滤器 filter map id label gt Assigned
  • 避免在 django allauth 的自定义用户模型中创建用户名字段

    我正在使用带有 allauth 的自定义用户模型 并且需要省略用户名字段 我已经看过文档和一大堆关于使用的 stackoverflow 答案ACCOUNT USER MODEL USERNAME FIELD None但所有这些仍然导致我的数
  • null != Something 和 Something != null 之间的区别

    之间有区别吗null something and something null在爪哇 如果有区别 那么我应该使用哪一个 为什么 之间没有区别null something and something null 你一定在想person getN
  • Javassist 增强部署失败

    我遇到了底部堆栈跟踪中指定的错误this https stackoverflow com questions 26220232 hibernate lazy loading proxy gorm static apis instanceof
  • JHipster - 日志文件

    我正在运行一个 JHipster 应用程序 我想知道日志文件在哪里 它们是在哪里生成的 这是一个新手问题 但找不到任何东西 我使用默认配置的 Dev 配置文件 没有更改有关 application dev yml 的任何内容 Thanks
  • 无法使用 XCode 创建快照

    我无法在 XCode 中拍摄我的特定项目的更多快照 如果我尝试创建快照 它会在状态栏中显示 正在创建快照 并永远持续下去 然后我强制退出 Xcode 重新启动并尝试再次创建快照 这次它立即给出错误消息 手动删除文件 锁定 因此 我然后使用终
  • jquery/javascript setInterval

    目前我正在开发一个用户通知提醒消息功能 我设法使用setInterval控制我的 Ajax 调用 检查是否有用户的通知消息 但我的问题是我只想要通知消息 在页面上出现一次 现在它在屏幕上显示多个通知警报消息 我知道你可以使用setTimeo
  • Android Canvas.DrawBitmap 没有模糊/抗锯齿?

    我正在尝试使用精灵 或非常像素化的角色 背景等 制作一个Android游戏 我把它们画在画布上 就像这样 matrix preScale xrat yrat canvas drawBitmap img matrix null 其中 img
  • 如何获取android中listview特定项目的id?

    我在用Listview并设置多个项目 每个项目都有喜欢 分享和评论选项 实际上我已经获取了 Item Id 并且还setText of TextView 成功了 但无法在特定项目的 Like 按钮单击事件上获取项目 ID 如何获取每个项目的
  • Android 中如何调用 getContentResolver() ?

    我想知道当时的背景getContentResolver 叫做 我有一个这样的场景 我有一个调用方法的活动 AmyFunc B 类 这不是一项活动 所以 在B类中我必须使用getContentResolver 我直接打电话getContent
  • 使用指令将类添加到宿主元素[重复]

    这个问题在这里已经有答案了 我目前正在学习 Angular 2 我了解如何使用 AngularRenderer设置一个ElementStyle 但现在我想使用Renderer方法 setElementClass renderElement
  • 获取 Spark 中组的最后一个值

    我有一个 SparkR DataFrame 如下所示 Create R data frame custId lt c rep 1001 5 rep 1002 3 1003 date lt c 2013 08 01 2014 01 01 20
  • Java 中的原始数据类型是线程安全的吗

    原始数据类型是这样的吗int shortJava 线程安全 我执行了以下代码 有时看不到预期结果 500 public class SampleThree extends Thread static long wakeUpTime Syst
  • CSS - 当 Margin-Top 存在时,Margin-Bottom 被忽略

    我有一个场景 我有多个 DIV 与 margin top 和 margin bottom 堆叠在一起 但我发现当我有 margin top 时 margin bottom 被忽略 我无法解释这是如何发生的 html div class bo
  • 为什么 LuaJIT 这么好?

    编辑 不幸的是 LuaJIT 已从下面链接的比较中删除 This 比较 http shootout alioth debian org u64 which programming languages are fastest php编程语言的
  • 使用java进行JSON模式验证[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在为返回 JSON 对象的 java webapp 编写一些验收测试 我想验证返回的 JSON 是否针对架构进行验证 任何人都可以建议
  • 在 npm 中安装 js beautify 时`没有这样的文件或目录`

    当我使用时出现此错误npm g install js beautify npm ERR path home developer software nodejs lib node modules js beautify js bin css
  • Rails 加载完成后运行代码?

    我有一个定期任务需要每分钟执行一次 使用delayed job 我希望 Rails 在加载完成后立即自动将其排队 如果系统中尚不存在此类任务 对于我来说 在整个 Rails 引导流程结束时运行一些代码的好地方是什么 有人建议 config
  • C# Collection 的最大容量在哪里定义?

    我尝试向一个Collection添加大量元素 每个元素都是简单的数据传输对象 具有基本数据类型的五个属性 没有什么特别的 在循环中添加新条目时 我总是收到 OutOfMemoryException 有趣的是 当我尝试添加第 8388608
  • 在Python中沿特定轴广播操作

    在Python中 假设我有一个正方形numpy matrix X 尺寸n x n我有一个numpy vector a尺寸的n 很简单 我想执行广播减法X a 但我希望能够指定沿哪个维度 以便我可以指定沿轴 0 或轴 1 进行减法 如何指定轴