广播(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. Nebula Graph 特性讲解——RocksDB 统计信息的收集和展示

    由于 Nebula Graph 的底层存储使用了 RocksDB,出于运维管理需要,我们的社区用户 @chenxu14 在 pr#2243 为 Nebula Graph 贡献了 RocksDB 统计信 ...

  2. 通过Glide加载不可见的图片

    今天遇到一个需求,需要点击分享的时候生成图片以及二维码. 即:将带有图片以及二维码的布局文件生成Bitmap,当然这个布局文件是后台生成的,并不可见,这时候会发现使用Glide加载图片没有反应. 源码 ...

  3. C++函数模板总结:

    //C++提高编程 模板(泛型编程 STL)//模板不可以直接使用 它只是一个框架//模板的通用并不是万能的//语法//template<typename T>//函数模板两种方式//1. ...

  4. Python 初学者容易踩的坑

    哈喽大家好,我是咸鱼. 今天咸鱼列出了一些大家在初学 Python 的时候容易踩的一些坑,看看你有没有中招过. 原文:https://www.bitecode.dev/p/unexpected-pyt ...

  5. C++标准库字符串流sstream

    sstream与strstream 在C++有两种字符串流,一种在<strstream>中定义,另一种在<sstream>中定义,两者的区别如下: strstream里包含st ...

  6. WPF之事件

    目录 WPF的树形结构 事件 路由事件 使用WPF内置路由事件 自定义路由事件 ButtonBase类的Click路由事件 创建一个路由事件 RoutedEventArgs的Source与Origin ...

  7. Navicat Premium15 解决只能显示前1000条记录问题

    Navicat Premium15 解决只能显示前1000条记录问题 最近使用Navicat Premium15图形化界面操作MySQL的数据库,发现在超过1461条记录的表里,只能显示前1000条, ...

  8. 用户不在 sudoers 文件中。此事将被报告

    在终端,进入root模式 vim /etc/sudoers 在    sudo (ALL:ALL) ALL下 添加 用户名 (ALL:ALL) ALL

  9. Python3解决UnicodeDecodeError: 'utf-8' codec can't decode byte..问题最快解决方案

    问题: 使用python3 作为socket通信的时候,出现了这个错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0x92 in posi ...

  10. py文件读写

    ''' 1.文件打开 open(文件名,模式) 2.文件关闭filename.close() 模式: 1.r 文件读,指针默认在文件开头 2.w 文件写,指针默认在开头 若有文件,则打开时写入覆盖原文 ...