- NumPy 教程
- 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 - 数组形状
- NumPy - 数组大小
- NumPy - 数组步长
- NumPy - 数组元素大小
- NumPy - 广播
- NumPy - 算术运算
- NumPy - 数组加法
- NumPy - 数组减法
- NumPy - 数组乘法
- NumPy - 数组除法
- 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 - 创建结构化数组
- NumPy - 操作结构化数组
- NumPy - 字段访问
- NumPy - 记录数组
- Numpy - 加载数组
- Numpy - 保存数组
- NumPy - 向数组追加值
- NumPy - 交换数组的列
- NumPy - 向数组插入轴
- NumPy 处理缺失数据
- NumPy - 处理缺失数据
- NumPy - 识别缺失值
- NumPy - 删除缺失数据
- NumPy - 填充缺失数据
- NumPy 性能优化
- NumPy - 使用数组进行性能优化
- NumPy - 使用数组进行矢量化
- NumPy - 数组的内存布局
- Numpy 线性代数
- NumPy - 线性代数
- NumPy - 矩阵库
- NumPy - 矩阵加法
- NumPy - 矩阵减法
- NumPy - 矩阵乘法
- NumPy - 元素级矩阵运算
- NumPy - 点积
- NumPy - 矩阵求逆
- NumPy - 行列式计算
- NumPy - 特征值
- NumPy - 特征向量
- NumPy - 奇异值分解
- NumPy - 求解线性方程组
- NumPy - 矩阵范数
- NumPy 元素级矩阵运算
- NumPy - 求和
- NumPy - 求平均值
- NumPy - 求中位数
- NumPy - 求最小值
- NumPy - 求最大值
- NumPy 集合运算
- NumPy - 唯一元素
- NumPy - 交集
- NumPy - 并集
- NumPy - 差集
- NumPy 有用资源
- NumPy 编译器
- NumPy - 快速指南
- NumPy - 有用资源
- NumPy - 讨论
NumPy - 数组加法
NumPy 数组加法
NumPy 数组加法允许您在数组之间执行元素级加法。此操作将来自两个相同形状的数组的对应元素相加,生成一个具有相同形状的新数组,其中包含求和后的值。
如果数组具有不同的形状,则 NumPy 可以根据某些条件将较小的数组广播以匹配较大数组的形状。
NumPy 中的元素级加法
元素级加法是 NumPy 中数组加法的最基本形式,其中两个数组的对应元素相加以生成一个新数组。
此类型的加法作用于相同形状的数组,对来自两个数组的每一对元素分别执行加法运算。
示例
在以下示例中,我们将数组a的每个元素都加到数组b的对应元素上 -
import numpy as np # Creating two arrays a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) # Performing element-wise addition result = a + b print(result)
以下是获得的输出 -
[5 7 9]
将标量添加到 NumPy 数组
当将标量(单个值)添加到数组时,标量将被广播以匹配数组的形状。这意味着标量实际上被视为一个与原始数组形状相同的数组,所有元素都等于标量值。
广播描述了 NumPy 在算术运算期间如何处理不同形状的数组。当运算涉及不同形状的数组时,NumPy 会根据特定的广播规则自动调整它们的形状以使其匹配。
示例
在此示例中,我们将标量“10”添加到数组“a”的每个元素中 -
import numpy as np # Creating an array a = np.array([1, 2, 3]) # Adding a scalar result = a + 10 print(result)
这将产生以下结果 -
[11 12 13]
添加不同形状的 NumPy 数组
NumPy 中的广播允许通过调整它们的维度以使其相互匹配来添加不同形状的数组。
NumPy 通过从最右侧的维度开始比较维度并向后工作来对数组进行广播对齐。如果两个维度相等或其中一个为 1,则认为它们是兼容的,在这种情况下,它将被广播以匹配另一个维度。
当维度不直接匹配时,NumPy 会根据需要沿不匹配的维度拉伸较小的数组以匹配较大数组的形状。
示例
在下面的示例中,数组“b”被广播以匹配数组“a”的形状,然后执行元素级加法 -
import numpy as np # Creating arrays with different shapes a = np.array([[1, 2, 3], [4, 5, 6]]) b = np.array([10, 20, 30]) # Adding arrays with broadcasting result = a + b print(result)
以下是上述代码的输出 -
[[11 22 33] [14 25 36]]
使用广播添加多维数组
在 NumPy 中,广播允许通过自动扩展较小数组的维度以匹配较大数组的形状来对不同形状的多维数组执行算术运算(例如加法)。
此过程涉及从最右侧的维度开始对齐维度并根据需要拉伸较小数组的维度。
示例
在下面的示例中,我们广播一维数组“a”以匹配二维数组“b”的维度 -
import numpy as np # Creating multi-dimensional arrays a = np.array([1, 2, 3]) b = np.array([[10], [20], [30]]) # Adding multi-dimensional arrays with broadcasting result = a + b print(result)
获得的输出如下所示 -
[[11 12 13] [21 22 23] [31 32 33]]
使用广播应用函数进行加法
NumPy 中的广播不仅简化了直接的元素级算术运算,还允许对不同形状的数组应用函数。使用广播,您可以对具有不同形状的数组应用各种数学函数。
示例
在此示例中,我们将标量“10”添加到数组“a”的每个元素中,然后逐元素应用“正弦”函数 -
import numpy as np # Creating an array a = np.array([1, 2, 3]) # Applying a function with broadcasting result = np.sin(a + 10) print(result)
执行上述代码后,我们将获得以下输出 -
[-0.99999021 -0.53657292 0.42016704]
添加不兼容的数组
如果我们尝试在 NumPy 中添加不兼容的数组,则操作将失败并引发ValueError。NumPy 使用广播对不同形状的数组进行运算,但这只有在形状根据特定规则兼容时才有可能。
广播通过从最右边的维度开始对齐数组的维度并向后工作来实现。对于两个维度才能兼容,它们必须相等或其中一个必须为 1(在这种情况下,它将被广播以匹配另一个维度)。
如果数组的形状不满足这些条件,则无法进行广播,并且操作会导致错误。
示例
在这种情况下,数组“a”和“b”的形状对于广播不兼容,导致错误 -
import numpy as np # Creating arrays with incompatible shapes a = np.array([1, 2, 3]) b = np.array([[10, 20], [30, 40]]) # Attempting to add incompatible arrays result = a + b print(result)
产生的结果如下 -
Traceback (most recent call last):File "/home/cg/root/66a1de2fae52f/main.py", line 8, in <module>result = a + bValueError: operands could not be broadcast together with shapes (3,) (2,2)