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计算牛顿迭代多项式实例分析
May 07 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
Dec 12 Python
Scrapy爬虫实例讲解_校花网
Oct 23 Python
python实现数独游戏 java简单实现数独游戏
Mar 30 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
Apr 28 Python
《与孩子一起学编程》python自测题
May 27 Python
python3 实现验证码图片切割的方法
Dec 07 Python
Python3 log10()函数简单用法
Feb 19 Python
Python生成rsa密钥对操作示例
Apr 26 Python
用python-webdriver实现自动填表的示例代码
Jan 13 Python
Python实现简单的俄罗斯方块游戏
Sep 25 Python
Python 读取千万级数据自动写入 MySQL 数据库
Jun 28 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 文件夹删除、php清除缓存程序
2009/08/25 PHP
php防攻击代码升级版
2010/12/29 PHP
ThinkPHP分页实例
2014/10/15 PHP
PHP二维数组去重算法
2016/12/17 PHP
php数据结构之顺序链表与链式线性表示例
2018/01/22 PHP
PHP面向对象程序设计继承用法简单示例
2018/12/28 PHP
laravel 5.3 单用户登录简单实现方法
2019/10/14 PHP
JavaScript 异步调用框架 (Part 4 - 链式调用)
2009/08/04 Javascript
JS localStorage实现本地缓存的方法
2013/06/22 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
IE6 hack for js 集锦
2014/09/23 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
Jquery遍历Json数据的方法
2015/04/20 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
2016/05/04 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
javascript self对象使用详解
2016/10/18 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
微信小程序开发探究
2016/12/27 Javascript
jquery实现折叠菜单效果【推荐】
2017/03/08 Javascript
jQuery查找dom的几种方法效率详解
2017/05/17 jQuery
react-router JS 控制路由跳转实例
2017/06/15 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
2019/04/29 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
swiper实现异形轮播效果
2019/11/28 Javascript
Jquery+javascript实现支付网页数字键盘
2020/12/21 jQuery
[01:03]DOTA2新的征程 你的脚印值得踏上
2014/08/13 DOTA
在Python中操作字典之update()方法的使用
2015/05/22 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
墨尔本照明批发商店:Mica Lighting
2017/12/28 全球购物
病媒生物防治方案
2014/05/13 职场文书
婚庆公司计划书
2014/09/15 职场文书