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列表去重的二种方法
Feb 14 Python
Python与shell的3种交互方式介绍
Apr 11 Python
Python在线运行代码助手
Jul 15 Python
浅谈python函数之作用域(python3.5)
Oct 27 Python
Python应用库大全总结
May 30 Python
Python 3.8 新功能全解
Jul 25 Python
Keras官方中文文档:性能评估Metrices详解
Jun 15 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
Sep 21 Python
如何使用Python调整图像大小
Sep 26 Python
python飞机大战游戏实例讲解
Dec 04 Python
Python中os模块的简单使用及重命名操作
Apr 17 Python
Python如何配置环境变量详解
May 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
php提示undefined index的几种解决方法
2012/05/21 PHP
刷新PHP缓冲区为你的站点加速
2015/10/10 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
JavaScript 原型链学习总结
2010/10/29 Javascript
js 可拖动列表实现代码
2011/12/13 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
javascript定义变量时有var和没有var的区别探讨
2014/07/21 Javascript
Ajax基础知识详解
2017/02/17 Javascript
深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
2017/09/10 Javascript
基于vue2.0动态组件及render详解
2018/03/17 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
jQuery中getJSON跨域原理的深入讲解
2020/09/02 jQuery
Vue js with语句原理及用法解析
2020/09/03 Javascript
vue实现动态表格提交参数动态生成控件的操作
2020/11/09 Javascript
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
Python实现线程状态监测简单示例
2018/03/28 Python
Python3中详解fabfile的编写
2018/06/24 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
python自动发微信监控报警
2019/09/06 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
Python如何在windows环境安装pip及rarfile
2020/06/15 Python
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
幼师自荐信范文
2013/10/06 职场文书
医学院校毕业生自荐信范文
2014/01/01 职场文书
大学生活动总结模板
2014/07/02 职场文书
应届生求职自荐信
2014/07/04 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
党员教师个人对照检查材料(群众路线)
2014/09/26 职场文书
小学优秀学生评语
2014/12/29 职场文书
六年级作文之家庭作文
2019/12/12 职场文书
CDPR谈《巫师》新作用虚幻5原因 称不会为Epic独占
2022/04/06 其他游戏
Redis如何实现验证码发送 以及限制每日发送次数
2022/04/18 Redis