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 29 Python
python中的对象拷贝示例 python引用传递
Jan 23 Python
python脚本实现数据导出excel格式的简单方法(推荐)
Dec 30 Python
安装python3的时候就是输入python3死活没有反应的解决方法
Jan 24 Python
python计算两个地址之间的距离方法
Jun 09 Python
Python学习笔记之变量、自定义函数用法示例
May 28 Python
Python3批量移动指定文件到指定文件夹方法示例
Sep 02 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
Mar 12 Python
Python字典fromkeys()方法使用代码实例
Jul 20 Python
python 根据列表批量下载网易云音乐的免费音乐
Dec 03 Python
用python发送微信消息
Dec 21 Python
python小程序之飘落的银杏
Apr 17 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下获取客户端ip地址的函数
2010/03/15 PHP
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
2011/05/25 PHP
html静态页面调用php文件的方法
2014/11/13 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
Symfony2函数用法实例分析
2016/03/18 PHP
php数据访问之查询关键字
2016/05/09 PHP
PHP设计模式之工厂模式定义与用法详解
2018/04/03 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
2019/04/02 PHP
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
使用nodejs、Python写的一个简易HTTP静态文件服务器
2014/07/18 NodeJs
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
2015/12/10 Javascript
JavaScript实现给定时间相加天数的方法
2016/01/25 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
ionic2 tabs 图标自定义实例
2017/03/08 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
2018/02/26 Javascript
在vue里面设置全局变量或数据的方法
2018/03/09 Javascript
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
[43:03]完美世界DOTA2联赛PWL S2 PXG vs Magma 第二场 11.21
2020/11/24 DOTA
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
python通过yield实现数组全排列的方法
2015/03/18 Python
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
整理Python中的赋值运算符
2015/05/13 Python
python3实现指定目录下文件sha256及文件大小统计
2019/02/25 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
俄罗斯香水和化妆品网上商店:NOTINO.ru
2019/12/17 全球购物
体育教学随笔感言
2014/02/24 职场文书
财务情况说明书范文
2014/05/06 职场文书
JavaScript 防篡改对象的用法示例
2021/04/24 Javascript