广播(Broadcast)是对不同形状(shape)的数组进行数值计算的方式。

广播规则:

  • 如果两个数组的维度数不相同,那么小维度数组的形状将会在最左边补1;
  • 如果两个数组的形状在任何一个维度都不匹配,那么数组的形状会沿着维度为1的维度扩展以匹配另外一个数组的形状;
  • 如果两个数组的形状在任何一个维度上都不匹配并且没有任何一个维度等于1,那么会引出异常。

In [1]: import numpy as np

#相同形状数组数值计算时,数组内元素逐个加减
In [2]: a = np.array([0,1,2])
In [3]: b = np.array([0,1,2]) In [4]: a + b
Out[4]: array([0, 2, 4]) #5扩展成[5,5,5]与a形状一致后分别相加
In [5]: a + 5
Out[5]: array([5, 6, 7]) #x从(1,3)、y从(3,1)都扩展成(3,3)后相加
In [7]: x = np.arange(3)
In [8]: y = np.arange(3)[:,np.newaxis] In [9]: x
Out[9]: array([0, 1, 2])
In [10]: y
Out[10]:
array([[0],
[1],
[2]]) In [11]: x + y
Out[11]:
array([[0, 1, 2],
[1, 2, 3],
[2, 3, 4]])

广播的归一化应用

#x为(10,3)数组
In [12]: x = np.random.random((10,3))
In [13]: x
Out[13]:
array([[0.05404783, 0.76923374, 0.65853154],
[0.08907194, 0.01900223, 0.04000283],
[0.72521795, 0.09186224, 0.67457589],
[0.41700931, 0.42471439, 0.94748451],
[0.95439046, 0.96458199, 0.01966024],
[0.31656808, 0.74726154, 0.22988047],
[0.70578412, 0.04238469, 0.66419186],
[0.1228215 , 0.09629365, 0.09550091],
[0.51172621, 0.96489282, 0.32432765],
[0.69833444, 0.19646535, 0.1527003 ]]) In [14]: x_mean = np.mean(x,axis=0)
In [15]: x_mean
Out[15]: array([0.45949718, 0.43166926, 0.38068562]) #x_mean从(1,3)扩展成(10,3)
In [16]: x_centered = x-x_mean #归一化值(实际值-平均值)
In [17]: x_centered
Out[17]:
array([[-0.40544935, 0.33756448, 0.27784592],
[-0.37042524, -0.41266704, -0.34068279],
[ 0.26572077, -0.33980702, 0.29389027],
[-0.04248787, -0.00695488, 0.56679889],
[ 0.49489328, 0.53291272, -0.36102538],
[-0.1429291 , 0.31559228, -0.15080515],
[ 0.24628693, -0.38928457, 0.28350624],
[-0.33667569, -0.33537562, -0.28518471],
[ 0.05222903, 0.53322355, -0.05635797],
[ 0.23883725, -0.23520391, -0.22798532]]) In [18]: x_centered.mean(0)
Out[18]: array([-1.11022302e-17, -4.44089210e-17, 2.77555756e-17])

Numpy广播功能的更多相关文章

  1. [开发技巧]·Numpy广播机制的深入理解与应用

    [开发技巧]·Numpy广播机制的深入理解与应用 1.问题描述 我们在使用Numpy进行数据的处理时,经常会用到广播机制来简化操作,例如在所有元素都加上一个数,或者在某些纬度上作相同的操作.广播机制很 ...

  2. NumPy 广播(Broadcast)

    NumPy 广播(Broadcast) 广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行. 如果两个数组 a 和 b ...

  3. numpy广播机制,取特定行、特定列的元素 的高级索引取法

    numpy广播机制,取特定行.特定列的元素 的高级索引取法 enter description here enter description here

  4. 初探numpy——广播和数组操作函数

    numpy广播(Broadcast) 若数组a,b形状相同,即a.shape==b.shape,那么a+b,a*b的结果就是对应数位的运算 import numpy as np a=np.array( ...

  5. 快来,Boom 3D广播功能还能这样用

    Boom 3D不仅为用户提供了包括3D立体音效.古典音乐音效在内的多种音效增强功能,而且还为用户提供了广播功能.该广播功能不仅涵盖了国内广播节目,而且还涵盖了国际广播节目. Boom 3D的广播功能还 ...

  6. NumPy 广播机制(Broadcasting)

    一.何为广播机制 a.广播机制是Numpy(开源数值计算工具,用于处理大型矩阵)里一种向量化数组操作方法. b.Numpy的通用函数(Universal functions) 中要求输入的两个数组sh ...

  7. numpy广播

    (m,n)   +,-,*,/  (m,1) 先将(m,1)复制n次,构成(m,n)矩阵,然后再进行+,-,*,/运算 (m,n)   +,-,*,/  (1,n) 先将 (1,n)复制m次,构成(m ...

  8. 7、numpy——广播

    1.广播的引出 广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行. 如果两个数组 a 和 b 形状相同,即满足 a. ...

  9. 吴裕雄--天生自然Numpy库学习笔记:NumPy 广播(Broadcast)

    广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行. 如果两个数组 a 和 b 形状相同,即满足 a.shape == ...

  10. Numpy 广播(Broadcast)

    广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式,对数组的算术运算通常在相应的元素上进行. 如果两个数组 a 和 b 形状相同,即满足a.shape == b ...

随机推荐

  1. ECMA Script Module(ES module)知识点

    1.每个 ES Module 都是运行在单独的私有作用,ESM 自动采用严格模式,忽略use strict <script type="module">console. ...

  2. 【Azure App Service for Linux】Linux Web App如何安装系统未安装的包

    问题描述 Linux Web App中如何安装系统默认未安装的包,如何来执行如 apt install XXX命令呢?现在遇见的问题时,通过Azure App Service门户中的SSH登录后,执行 ...

  3. 【Azure 应用服务】Function App中的函数(Functions)删除问题

    问题描述 Function App 中的函数如何删除问题 问题分析 1)在Function App的门户上,点击"Delete"进行删除 2) 进入Function App的高级管 ...

  4. 连接 AI,NebulaGraph Python ORM 项目 Carina 简化 Web 开发

    作者:Steam & Hao 本文整理自社区第 7 期会议中 13'21″ 到 44'11″ 的 Python ORM 的分享,视频见 https://www.bilibili.com/vid ...

  5. BUUCTF—Crypto(完结版本—_—)

    BUUCTF-Crypto 1.一眼就解密 考点:base64 我的解答: 字符串后面的等号,看来是base大家族,由字母和数字范围来看是base64,不管了,先扔CyberCher,仙女魔法棒变出f ...

  6. Java 自定义数组的工具类

    1 /** 2 * 3 * @Description 自定义数组的工具类 4 * @author Bytezero·zhenglei! Email:420498246@qq.com 5 * @vers ...

  7. 新零售SaaS架构:订单履约系统架构设计(万字图文总结)

    什么是订单履约系统? 订单履约系统用来管理从接收客户订单到将商品送达客户手中的全过程. 它连接了上游交易(客户在销售平台下单环)和下游仓储配送(如库存管理.物流配送),确保信息流顺畅.操作协同,提升整 ...

  8. Git 如何删除本地分支和远程分支

    查看已有的本地及远程分支:git branch -a   删除远程分支(当前删除的是origin/dev分支):git push origin --delete dev   删除后,再次查看分支情况: ...

  9. Nordic芯片调研简析

    一 公司简介: Nordic semiconductor是一家在奥斯证券交易所(OSX:NOD)上市的挪威无晶圆厂半导体公司,专门研究IoT的无线技术.Nordic的声誉建立在领先的技术和开发工具之上 ...

  10. 启动Eclipse 弹出Failed to load the JNI shared library jvm.dll解决方案

    原因:eclipse的版本与jdk版本不一致 解决方案:两者都安装64位的,或者都安装32位的,不能一个是32位一个是64位.