详解Numpy中的广播原则/机制


Posted in Python onSeptember 20, 2018

广播的原则

如果两个数组的后缘维度(从末尾开始算起的维度)的轴长度相符或其中一方的长度为1,则认为它们是广播兼容的。广播会在缺失维度和(或)轴长度为1的维度上进行。

在上面的对arr每一列减去列平均值的例子中,arr的后缘维度为3,arr.mean(0)后缘维度也是3,满足轴长度相符的条件,广播会在缺失维度进行。

这里有点奇怪的是缺失维度不是axis=1,而是axis=0,个人理解是缺失维度指的是两个arr除了轴长度匹配的维度,在上面的例子中,正好是axis=0。这块欢迎指正

arr.mean(0)沿着axis=0广播,可以看作是把arr.mean(0)沿着竖直方向复制4份,即广播的时候arr.mean(0)相当于一个shape=(4,3)的数组,数组的每一行均相同,均为arr.mean(0)

为了了解这个原则,首先我们来看一组例子:

# 数组直接对一个数进行加减乘除,产生的结果是数组中的每个元素都会加减乘除这个数。
In [12]: import numpy as np
In [13]: a = np.arange(1,13).reshape((4, 3))
In [14]: a * 2
Out[14]: array([[ 2, 4, 6],
    [ 8, 10, 12],
    [14, 16, 18],
    [20, 22, 24]])
# 接下来我们看一下数组与数组之间的计算
In [17]: b = np.arange(12,24).reshape((4,3))
In [18]: b
Out[18]: array([[12, 13, 14],
    [15, 16, 17],
    [18, 19, 20],
    [21, 22, 23]])
In [19]: a + b
Out[19]: array([[13, 15, 17],
    [19, 21, 23],
    [25, 27, 29],
    [31, 33, 35]])
In [20]: c = np.array([1,2,3])
In [21]: a+c
Out[21]: array([[ 2, 4, 6],
    [ 5, 7, 9],
    [ 8, 10, 12],
    [11, 13, 15]])
In [22]: d = np.arange(10,14).reshape((4,1))
In [23]: d
Out[23]: array([[10],
    [11],
    [12],
    [13]])
In [24]: a + d
Out[24]: array([[11, 12, 13],
    [15, 16, 17],
    [19, 20, 21],
    [23, 24, 25]])
# 从上面可以看出,和线性代数中不同的是,m*n列的m行的一维数组或者n列的一维数组也是可以计算的。

这是为什么呢?这里要提到numpy的广播原则:

如果两个数组的后缘维度(从末尾开始算起的维度)的轴长度相符或其中一方的长度为1,则认为它们是广播兼容的。广播会在缺失维度和(或)轴长度为1的维度上进行。

在上面的代码中,a的维度是(4,3),c的维度是(1,3);d的维度是(4,1)。所以假设有两个数组,第一个的维度是(x_1, y_1, z_1),另一个数组的维度是(x_2, y_2, z_2),要判断这两个数组能不能进行计算,可以用如下方法来判断:

if z_1 == z_2 or z_1 == 1 or z_2 == 1:
 if y_1 == y_2 or y_1 == 1 or y_2 == 1:
  if x_1 == x_2 or x_1 == 1 or x_2 == 1:
   可以运算
  else:
   不可以运算
 else:
  不可以运算
else:
 不可以运算

这里需要注意:(3,3,2)和(3,2)是可以运算的,因为对于二维数组(3,2)也可以表示为(1,3,2),套用上述的规则是完全适用的,同理:(4,2,5,4)和(2,1,4)也是可以进行运算的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用HTMLParser解析html实例
Feb 08 Python
python实现将内容分行输出
Nov 05 Python
Python实现将文本生成二维码的方法示例
Jul 18 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
Oct 01 Python
python实现超市扫码仪计费
May 30 Python
python3对拉勾数据进行可视化分析的方法详解
Apr 03 Python
python 将dicom图片转换成jpg图片的实例
Jan 13 Python
python词云库wordCloud使用方法详解(解决中文乱码)
Feb 17 Python
Python3 获取文件属性的方式(时间、大小等)
Mar 12 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
Dec 11 Python
OpenCV+Python3.5 简易手势识别的实现
Dec 21 Python
Python如何识别银行卡卡号?
Jun 10 Python
Python 读写文件的操作代码
Sep 20 #Python
python使用多进程的实例详解
Sep 19 #Python
Anaconda2 5.2.0安装使用图文教程
Sep 19 #Python
win10系统下Anaconda3安装配置方法图文教程
Sep 19 #Python
Window 64位下python3.6.2环境搭建图文教程
Sep 19 #Python
win10下python3.5.2和tensorflow安装环境搭建教程
Sep 19 #Python
win10下tensorflow和matplotlib安装教程
Sep 19 #Python
You might like
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
jQuery 源码分析笔记(3) Deferred机制
2011/06/19 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
jquery高效反选具体实现
2013/05/05 Javascript
仿百度的关键词匹配搜索示例
2013/09/25 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
2014/09/25 Javascript
js在指定位置增加节点函数insertBefore()用法实例
2015/01/12 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
JS+CSS实现的蓝色table选项卡效果
2015/10/08 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
2015/12/26 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
探寻JavaScript中this指针指向
2016/04/23 Javascript
js 创建对象 经典模式全面了解
2016/08/16 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
JavaScript数组复制详解
2017/02/02 Javascript
基于JS实现仿京东搜索栏随滑动透明度渐变效果
2017/07/10 Javascript
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
在antd中setFieldsValue和defaultVal的用法
2020/10/29 Javascript
js正则表达式简单校验方法
2021/01/03 Javascript
如何在现代JavaScript中编写异步任务
2021/01/31 Javascript
浅谈Python实现Apriori算法介绍
2017/12/20 Python
django输出html内容的实例
2018/05/27 Python
python使用tornado实现简单爬虫
2018/07/28 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
python读取文本中的坐标方法
2018/10/14 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
幼儿教师考核制度
2014/01/25 职场文书
英语教学随笔感言
2014/02/20 职场文书
大学生个人自荐信
2014/02/24 职场文书
地质灾害防治方案
2014/05/14 职场文书
餐厅感恩节活动策划方案
2014/10/11 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书