- NumPy 教程
- NumPy - 主页
- NumPy - 简介
- NumPy - 环境
- NumPy - Ndarray 对象
- NumPy - 数据类型
- NumPy - 数组属性
- NumPy - 数组创建例程
- NumPy - 来自现有数据的数组
- 来自数值范围的数组
- NumPy - 索引和切片
- NumPy - 高级索引
- NumPy - 广播
- NumPy - 迭代数组
- NumPy - 数组操作
- NumPy - 二元运算符
- NumPy - 字符串函数
- NumPy - 数学函数
- NumPy - 算术运算
- NumPy - 统计函数
- 排序、搜索和计数功能
- NumPy - 字节交换
- NumPy - 副本和视图
- NumPy - 矩阵库
- NumPy - 线性代数
- NumPy-Matplotlib
- NumPy - 使用 Matplotlib 绘制直方图
- NumPy - 使用 NumPy 进行 I/O
- NumPy 有用资源
- NumPy - 快速指南
- NumPy - 有用的资源
- NumPy - 讨论
NumPy - 广播
术语“广播”是指 NumPy 在算术运算期间处理不同形状的数组的能力。数组的算术运算通常是针对相应的元素进行的。如果两个数组的形状完全相同,那么这些操作就可以顺利执行。
实施例1
import numpy as np a = np.array([1,2,3,4]) b = np.array([10,20,30,40]) c = a * b print c
其输出如下 -
[10 40 90 160]
如果两个数组的维度不同,则无法进行元素到元素的操作。然而,由于广播功能,在 NumPy 中仍然可以对不相似形状的数组进行操作。较小的数组被广播到较大数组的大小,以便它们具有兼容的形状。
如果满足以下规则,则可以进行广播 -
ndim小于另一个的数组在其形状中添加“1”。
输出形状的每个维度的大小是该维度的输入大小的最大值。
如果输入在特定维度上的大小与输出大小匹配或者其值恰好为 1,则输入可以用于计算。
如果输入的维度大小为 1,则该维度中的第一个数据条目将用于沿该维度的所有计算。
如果上述规则产生有效结果并且以下其中一个为真,则一组数组被称为可广播-
数组具有完全相同的形状。
数组具有相同的维数,每个维的长度要么是公共长度,要么是 1。
维度太少的数组可以在其形状前面加上长度为 1 的维度,以便上述属性成立。
以下程序显示了广播的示例。
实施例2
import numpy as np a = np.array([[0.0,0.0,0.0],[10.0,10.0,10.0],[20.0,20.0,20.0],[30.0,30.0,30.0]]) b = np.array([1.0,2.0,3.0]) print 'First array:' print a print '\n' print 'Second array:' print b print '\n' print 'First Array + Second Array' print a + b
该程序的输出如下 -
First array: [[ 0. 0. 0.] [ 10. 10. 10.] [ 20. 20. 20.] [ 30. 30. 30.]] Second array: [ 1. 2. 3.] First Array + Second Array [[ 1. 2. 3.] [ 11. 12. 13.] [ 21. 22. 23.] [ 31. 32. 33.]]
下图演示了如何广播数组b以与a兼容。