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书籍信息爬虫实例
Mar 19 Python
Python父目录、子目录的相互调用方法
Feb 16 Python
python之pexpect实现自动交互的例子
Jul 25 Python
利用Python检测URL状态
Jul 31 Python
使用python-pptx包批量修改ppt格式的实现
Feb 14 Python
从多个tfrecord文件中无限读取文件的例子
Feb 17 Python
Django使用Celery加redis执行异步任务的实例内容
Feb 20 Python
Django REST framwork的权限验证实例
Apr 02 Python
基于python计算并显示日间、星期客流高峰
May 07 Python
Opencv求取连通区域重心实例
Jun 04 Python
python中使用np.delete()的实例方法
Feb 01 Python
详细介绍python操作RabbitMq
Apr 12 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
用PHP实现的随机广告显示代码
2007/06/14 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
2014/11/04 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
php上传大文件失败的原因及应对策略
2015/10/20 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
jQuery源码分析之jQuery中的循环技巧详解
2014/09/06 Javascript
基于JavaScript实现TAB标签效果
2016/01/12 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
2017/04/14 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
JS实现transform实现扇子效果
2020/01/17 Javascript
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
Python中的元类编程入门指引
2015/04/15 Python
Python利用递归和walk()遍历目录文件的方法示例
2017/07/14 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
2018/04/11 Python
python  文件的基本操作 菜中菜功能的实例代码
2019/07/17 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
opencv 图像轮廓的实现示例
2020/07/08 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
Harrods英国:世界领先的奢侈品百货商店
2020/09/23 全球购物
统计员岗位职责
2013/11/14 职场文书
化妆品促销方案
2014/02/24 职场文书
校庆标语集锦
2014/06/25 职场文书
2014年党员整改措施
2014/10/24 职场文书
2014年教育教学工作总结
2014/11/13 职场文书
小学英语复习计划
2015/01/19 职场文书
三峡人家导游词
2015/01/31 职场文书
幼儿园教师师德表现自我评价
2015/03/05 职场文书
宾馆安全管理制度
2015/08/06 职场文书
辞职申请书范本
2019/05/20 职场文书