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实现八大排序算法
Aug 13 Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
Mar 11 Python
Python3.4编程实现简单抓取爬虫功能示例
Sep 14 Python
高质量Python代码编写的5个优化技巧
Nov 16 Python
浅谈numpy库的常用基本操作方法
Jan 09 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 Python
Python使用ConfigParser模块操作配置文件的方法
Jun 29 Python
python异步编程 使用yield from过程解析
Sep 25 Python
Django操作session 的方法
Mar 09 Python
PyQt5+Pycharm安装和配置图文教程详解
Mar 24 Python
python实现杨辉三角的几种方法代码实例
Mar 02 Python
Python入门学习之类的相关知识总结
May 25 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模板之Phpbean的目录结构
2008/01/10 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
php中计算时间差的几种方法
2009/12/31 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
jquery查找tr td 示例模拟
2014/05/08 Javascript
多个$(document).ready()的执行顺序实例分析
2014/07/26 Javascript
JavaScript学习心得之概述
2015/01/20 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
jQuery自制提示框tooltip改进版
2016/08/01 Javascript
JS代码实现百度地图 画圆 删除标注
2016/10/12 Javascript
canvas绘制多边形
2017/02/24 Javascript
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
微信小程序授权获取用户详细信息openid的实例详解
2017/09/20 Javascript
vue实现验证码按钮倒计时功能
2018/04/10 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
2019/07/15 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
Django框架中处理URLconf中特定的URL的方法
2015/07/20 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
深入浅析Python的类
2018/06/22 Python
python数据预处理方式 :数据降维
2020/02/24 Python
python在协程中增加任务实例操作
2021/02/28 Python
竞聘上岗演讲稿范文
2014/01/10 职场文书
幼儿园小班评语
2014/04/18 职场文书
文明城市标语
2014/06/16 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
班主任先进事迹材料
2014/12/17 职场文书
销售助理岗位职责
2015/02/11 职场文书
教师年度考核个人总结
2015/02/12 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
深入理解python协程
2021/06/15 Python