numpy数组广播的机制


Posted in Python onJuly 12, 2019

numpy数组的广播功能强大,但是也同时让人疑惑不解,现在让我们来谈谈其中的原理。

广播原则:

如果两个数组的后缘维度(即:从末尾开始算起的维度)的轴长相符或其中一方的长度为1,则认为它们是广播兼容的,广播会在缺失和(或)长度为1的轴上进行.

上面的原则很重要,是广播的指导思想,下面我们来看看例子。

1.其实在最简单的数组与标量数字之间的运算就存在广播,只是我们把它看作理所当然了。

numpy数组广播的机制

2.再看下一个例子,这个大家都会一致认为这是广播了

numpy数组广播的机制

根据广播原则:arr1的shape为(4,1),arr2的shape为(3,),所以会同时在两个轴发生广播,arr1的shape变成(4,3),而arr2的shape变成(4,3),所以结果也为(4,3).

其实代码中发生了下图描述的事情:

numpy数组广播的机制

3.同理,我们可以得到三维数组的广播情况

numpy数组广播的机制

根据广播原则分析:arr1的shape为(3,4,2),arr2的shape为(4,2),它们的后缘轴长度都为(4,2),所以可以在0轴进行广播,arr2的shape变为(3,4,2).

下面说明一下三维数组在各维度的广播形状需求:

numpy数组广播的机制

以上所有形状都可以发生广播,你可以用我们开篇所说的广播原则进行验证。

最后,再来说一个易错的实际例子。

numpy数组广播的机制

arr减去他在1轴上的平均值,会出错?看看为啥。

因为arr.mean(1)产生的shape为(4,),根据广播原则,较小的数组的后缘维度必须为1,

所以需要将arr.mean变成(4,1),你所期望的结果如下:

numpy数组广播的机制

参考:《利用Python进行数据分析》

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python守护进程(daemon)代码实例
Mar 06 Python
Python中字符串对齐方法介绍
May 21 Python
Python操作MySQL数据库的三种方法总结
Jan 30 Python
基于python requests库中的代理实例讲解
May 07 Python
python实现输入数字的连续加减方法
Jun 22 Python
python将回车作为输入内容的实例
Jun 23 Python
Python实现拷贝/删除文件夹的方法详解
Aug 29 Python
Python简易版停车管理系统
Aug 12 Python
python 计算积分图和haar特征的实例代码
Nov 20 Python
解决pycharm最左侧Tool Buttons显示不全的问题
Dec 17 Python
Python调用OpenCV实现图像平滑代码实例
Jun 19 Python
解决tensorflow读取本地MNITS_data失败的原因
Jun 22 Python
Python的numpy库下的几个小函数的用法(小结)
Jul 12 #Python
python读取.mat文件的数据及实例代码
Jul 12 #Python
如何用Python破解wifi密码过程详解
Jul 12 #Python
python pip源配置,pip配置文件存放位置的方法
Jul 12 #Python
Python3 itchat实现微信定时发送群消息的实例代码
Jul 12 #Python
flask应用部署到服务器的方法
Jul 12 #Python
如何通过50行Python代码获取公众号全部文章
Jul 12 #Python
You might like
关于JavaScript的gzip静态压缩方法
2007/01/05 Javascript
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
使用jQuery判断Div是否在可视区域的方法 判断div是否可见
2016/02/17 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
Bootstrap模态框使用详解
2017/02/15 Javascript
js实现随机点名系统(实例讲解)
2017/10/18 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
精读《Vue3.0 Function API》
2020/05/20 Javascript
[01:49]一目了然!DOTA2DotA快捷操作对比第二弹
2014/05/16 DOTA
[01:14]英雄,所敬略同——2018完美盛典宣传视频4K
2018/12/05 DOTA
在Django的session中使用User对象的方法
2015/07/23 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
2018/11/06 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
python 实现手机自动拨打电话的方法(通话压力测试)
2019/08/08 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
阿迪达斯意大利在线商店:adidas意大利
2016/09/19 全球购物
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
运动会广播稿80字
2014/01/23 职场文书
模具专业毕业推荐信
2014/03/08 职场文书
委托证明书
2014/09/17 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
企业承诺书格式范文
2015/04/28 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书
Pandas 稀疏数据结构的实现
2021/07/25 Python
webpack的移动端适配方案小结
2021/07/25 Javascript
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技
MySQL创建管理HASH分区
2022/04/13 MySQL