numpy中的广播(Broadcasting)
2024-10-03 10:58:24
Numpy的Universal functions 中要求输入的数组shape是一致的,当数组的shape不相等的时候,则会使用广播机制,调整数组使得shape一样,满足规则,则可以运算,否则就出错
四条规则如下:
- 让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐
- 输出数组的shape是输入数组shape的各个轴上的最大值
- 如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,否则出错
- 当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值
以下通过实例来说明这些问题
一般情况下,numpy 都是采用一一对应的方式(element-by-element )进行计算
例子1:
from numpy import array
a = array([1.0,2.0,3.0])
b = array([2.0,2.0,2.0])
a * b
array([ 2., 4., 6.])
当不相等时,则会采用规则对齐
from numpy import array
a = array([1.0,2.0,3.0])
b = 2.0
a * b
array([ 2., 4., 6.])
a.shape得到的是(3,) b是一个浮点数,如果转换成array,则b.shape是一个(),a的1轴对齐,补齐为1,a.shape(3,1),b对齐,则对齐也为(3,1),然后按照一一对应的方式计算
或许上述例子不是太明确,下面采用一个更加确切的例子说明:
import numpy as np
a = np.arange(0, 6).reshape(6, 1)
a #array([[ 0], [1], [2], [3], [4], [5]])
a.shape #(6, 1)
b = np.arange(0, 5)
b.shape #(5,)
c = a + b
print (c)
[[0 1 2 3 4]
[1 2 3 4 5]
[2 3 4 5 6]
[3 4 5 6 7]
[4 5 6 7 8]
[5 6 7 8 9]]
最新文章
- 使用cmd打开java文件,报错:“错误,编码GBK的不可映射字符”
- 常用的js正则表达式
- Storm进阶
- Oracle常用操作-----(二)
- Jade之Filters
- hdu 1513 &;&; 1159 poj Palindrome (dp, 滚动数组, LCS)
- UIDatePicker控件
- java_代码注释风格
- Center OS 7 安装 $$
- mysql中的范式与范式——读<;<;高性能mysql>;>;笔记一
- Struts2 转换器
- GBT 31000-2015 社会治安综合治理基础数据规范 数据项 编码
- 【读书笔记】iOS-Web应用程序的自动化测试
- 关于datatables自适应以及自定义列宽度的总结
- pycharm设置连接github
- Table转换成实体、Table转换成实体集合(可转换成对象和值类型)
- java 下对字符串的格式化
- R语言学习笔记 (入门知识)
- 代码覆盖率测试及 GitHub 自动化集成
- 【html】标签的分类