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 21 Python
Python中scatter函数参数及用法详解
Nov 08 Python
Python实现Pig Latin小游戏实例代码
Feb 02 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
python从子线程中获得返回值的方法
Jan 30 Python
python正则表达式匹配不包含某几个字符的字符串方法
Jul 23 Python
python获取网络图片方法及整理过程详解
Dec 20 Python
Python如何使用bokeh包和geojson数据绘制地图
Mar 21 Python
python中shell执行知识点
May 06 Python
Python爬虫爬取新闻资讯案例详解
Jul 14 Python
python3操作redis实现List列表实例
Aug 04 Python
Django框架之路由用法
Jun 10 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报表之jpgraph柱状图实例代码
2011/08/22 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
2013/06/20 PHP
PHP Switch 语句之学习笔记
2013/09/21 PHP
支付宝服务窗API接口开发php版本
2016/07/20 PHP
一个加载js文件的小脚本
2007/06/28 Javascript
javascript 字符串连接的性能问题(多浏览器)
2008/11/18 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
Nodejs+express+html5 实现拖拽上传
2014/08/08 NodeJs
深入理解JavaScript系列(44):设计模式之桥接模式详解
2015/03/04 Javascript
jQuery选择id属性带有点符号元素的方法
2015/03/17 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
python网络编程之读取网站根目录实例
2014/09/30 Python
Python 通过URL打开图片实例详解
2017/06/01 Python
python 执行shell命令并将结果保存的实例
2018/05/11 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
简单了解Pandas缺失值处理方法
2019/11/16 Python
使用python+whoosh实现全文检索
2019/12/09 Python
Probikekit日本:自行车套件,跑步和铁人三项装备
2017/04/03 全球购物
PHP开发的一般流程
2013/08/13 面试题
客户经理岗位职责
2013/12/08 职场文书
施工安全责任书
2014/04/14 职场文书
团日活动总结模板
2014/06/25 职场文书
初中学校对照检查材料
2014/08/19 职场文书
2014年学校团委工作总结
2014/12/20 职场文书
钱塘江大潮导游词
2015/02/03 职场文书
拿破仑传读书笔记
2015/07/01 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
信息技术远程培训心得体会
2016/01/09 职场文书
小学语文教学反思范文
2016/03/03 职场文书