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 11 Python
python搜索指定目录的方法
Apr 29 Python
用Python实现命令行闹钟脚本实例
Sep 05 Python
python django使用haystack:全文检索的框架(实例讲解)
Sep 27 Python
使用Python实现windows下的抓包与解析
Jan 15 Python
python正则表达式爬取猫眼电影top100
Feb 24 Python
django反向解析URL和URL命名空间的方法
Jun 05 Python
在Python 中实现图片加框和加字的方法
Jan 26 Python
Python使用MyQR制作专属动态彩色二维码功能
Jun 04 Python
python logging.info在终端没输出的解决
May 12 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
Dec 28 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
Mar 03 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
1982年日本摄影师镜头下的中国孩子 那无忧无虑的童年
2020/03/12 杂记
通过对php一些服务器端特性的配置加强php的安全
2006/10/09 PHP
php中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
php面象对象数据库操作类实例
2014/12/02 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
jQuery实现移动端手机商城购物车功能
2016/09/24 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
2016/11/15 Javascript
bootstrap中模态框、模态框的属性实例详解
2017/02/17 Javascript
Angular动态添加、删除输入框并计算值实例代码
2017/03/29 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
python使用Matplotlib画饼图
2018/09/25 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
使用selenium和pyquery爬取京东商品列表过程解析
2019/08/15 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
linux面试题参考答案(10)
2016/10/26 面试题
请说出以下代码输出什么
2013/08/30 面试题
什么是抽象
2015/12/13 面试题
会计毕业自我鉴定
2014/02/05 职场文书
工作决心书
2014/03/11 职场文书
公务员平时考核实施方案
2014/03/11 职场文书
希特勒经典演讲稿
2014/05/19 职场文书
创新社会管理心得体会
2014/09/12 职场文书
《哪吒之魔童降世》观后感:世上哪有随随便便的成功
2019/11/08 职场文书
javaScript Array api梳理
2021/03/31 Javascript
python可视化大屏库big_screen示例详解
2021/11/23 Python
「月刊Action」2022年5月号封面公开
2022/03/21 日漫
MySQL视图概念以及相关应用
2022/04/19 MySQL
使用CSS实现音波加载效果
2023/05/07 HTML / CSS