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 相关文章推荐
浅谈flask中的before_request与after_request
Jan 20 Python
对numpy 数组和矩阵的乘法的进一步理解
Apr 04 Python
在cmd命令行里进入和退出Python程序的方法
May 12 Python
python寻找list中最大值、最小值并返回其所在位置的方法
Jun 27 Python
对Python3 序列解包详解
Feb 16 Python
11个Python3字典内置方法大全与示例汇总
May 13 Python
Python装饰器使用你可能不知道的几种姿势
Oct 25 Python
python3 webp转gif格式的实现示例
Dec 10 Python
tensorflow的计算图总结
Jan 12 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
Feb 13 Python
Java byte数组操纵方式代码实例解析
Jul 22 Python
python Yaml、Json、Dict之间的转化
Oct 19 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
打造计数器DIY三步曲(上)
2006/10/09 PHP
php生成随机数的三种方法
2014/09/10 PHP
PHP命令Command模式用法实例分析
2018/08/08 PHP
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
2007/02/09 Javascript
URL地址中的#符号使用说明
2011/02/12 Javascript
JQGrid的用法解析(列编辑,添加行,删除行)
2013/11/08 Javascript
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
SpringMVC返回json数据的三种方式
2015/12/10 Javascript
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
JS抛物线动画实例制作
2018/02/24 Javascript
JavaScript常用事件介绍
2019/01/21 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
[01:20]辉夜杯背景故事宣传片《辉夜传说》
2015/12/25 DOTA
Python的socket模块源码中的一些实现要点分析
2016/06/06 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
Flask入门之上传文件到服务器的方法示例
2018/07/18 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
Python图片的横坐标汉字实例
2019/12/04 Python
Django3.0 异步通信初体验(小结)
2019/12/04 Python
Python将二维列表list的数据输出(TXT,Excel)
2020/04/23 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
Django rest framework分页接口实现原理解析
2020/08/21 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
普通院校学生的自荐信
2013/11/27 职场文书
酒店管理求职信范文
2014/04/06 职场文书
团日活动总结书
2014/05/08 职场文书
公司员工活动策划方案
2014/08/20 职场文书
旷课检讨书500字
2014/10/14 职场文书
民政局标准版离婚协议书
2014/12/01 职场文书
个人自荐书范文
2015/03/09 职场文书
信息技术远程培训心得体会
2016/01/09 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
导游词之桂林山水
2019/09/20 职场文书
初中生入团申请书范文(五篇)
2019/10/16 职场文书
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python