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 连接各类主流数据库的实例代码
Jan 30 Python
django 实现电子支付功能的示例代码
Jul 25 Python
pandas筛选某列出现编码错误的解决方法
Nov 07 Python
为什么你还不懂得怎么使用Python协程
May 13 Python
JupyterNotebook设置Python环境的方法步骤
Dec 03 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
Jan 20 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 Python
浅谈JupyterNotebook导出pdf解决中文的问题
Apr 22 Python
python安装sklearn模块的方法详解
Nov 28 Python
python利用proxybroker构建爬虫免费IP代理池的实现
Feb 21 Python
Django利用AJAX技术实现博文实时搜索
May 06 Python
教你如何使用Python实现二叉树结构及三种遍历
Jun 18 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
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
ThinkPHP关联模型操作实例分析
2012/09/23 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
XENON基于JSON变种
2010/07/27 Javascript
extjs4 treepanel动态改变行高度示例
2013/12/17 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
使用JavaScript获取电池状态的方法
2014/05/03 Javascript
JavaScript实现将xml转换成html table表格的方法
2015/04/17 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
用JavaScript和jQuery实现瀑布流
2017/03/19 Javascript
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
JS实现的检验身份证格式并输出出生日期,年龄,性别,出生地示例
2019/05/17 Javascript
JS Array.from()将伪数组转换成数组的方法示例
2020/03/23 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
浅谈python字典多键值及重复键值的使用
2016/11/04 Python
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
Python socket实现简单聊天室
2018/04/01 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
Python Pywavelet 小波阈值实例
2019/01/09 Python
详解Python3 pandas.merge用法
2019/09/05 Python
python实现串口通信的示例代码
2020/02/10 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
Python实现井字棋小游戏
2020/03/09 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
2021/01/23 Python
yy结婚证婚词
2014/01/10 职场文书
销售冠军获奖感言
2014/02/03 职场文书
六年级数学教学反思
2014/02/03 职场文书
道德演讲稿
2014/05/21 职场文书
物业消防安全责任书
2014/07/23 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
未婚证明范本
2015/06/15 职场文书
MySQL系列之十一 日志记录
2021/07/02 MySQL