学习AI先从Numpy开始:数组运算深度解析之加减乘除及广播规则

勒令课程 2024-03-14 03:36:34
在Python数据科学领域,NumPy库以其高效、便捷的数组运算能力而著称。其中,对多维数组进行的基础数学运算以及独特的广播(Broadcasting)机制是其核心功能之一。本文将带领读者深入理解并掌握NumPy中数组的基本算术运算及其广播规则,并通过具体的代码示例来演示它们的实际应用。 基础算术运算NumPy支持对多维数组进行常见的四则运算,包括加法、减法、乘法和除法: import numpy as np# 创建两个2D数组arr1 = np.array([[1, 2], [3, 4]])arr2 = np.array([[5, 6], [7, 8]])# 加法add_result = arr1 + arr2print(add_result) # 输出:[[ 6 8] # [10 12]]# 减法sub_result = arr1 - arr2print(sub_result) # 输出:[[-4 -4] # [-4 -4]]# 乘法mul_result = arr1 * arr2print(mul_result) # 输出:[[ 5 12] # [21 32]]# 除法(注意可能有浮点数结果)div_result = arr1 / arr2print(div_result) # 输出:[[0.2 0.33333333] # [0.42857143 0.5 ]]广播规则NumPy中的广播规则允许不同形状的数组之间执行元素级运算,只要满足一定的条件。广播可以节省内存,同时避免显式复制数组以匹配尺寸。 广播原则: 如果两个数组的某个维度长度相同,则直接进行对应位置的元素计算。如果一个数组的维度为1,则这个维度会被“拉伸”至与另一个数组相应维度长度相同,从而进行逐元素运算。所有数组在非单维度上必须具有兼容的形状,即大小要么相同要么其中一个为1。下面是一些实践广播规则的例子: # 数组与标量运算scalar = 2scalar_add = arr1 + scalarprint(scalar_add) # 输出:[[3 4] # [5 6]]# 不同形状但符合广播规则的数组运算row_vec = np.array([10, 20])broadcast_add = arr1 + row_vecprint(broadcast_add) # 输出:[[11 22] # [13 24]]# 广播的一个重要应用场景是在向数组所有元素应用一个变化时arr3 = np.array([[1, 2, 3], [4, 5, 6]])scale_factor = np.array([2])scaled_arr = arr3 * scale_factorprint(scaled_arr) # 输出:[[ 2 4 6] # [ 8 10 12]]总结通过上述示例,我们展示了如何利用NumPy实现数组间的简单算术运算,并深入探讨了NumPy中的广播规则。广播不仅简化了数组操作,而且大大提高了处理效率,尤其在机器学习和数据分析项目中,能够帮助开发者更有效地进行大规模数据运算。 实际开发中,理解并熟练运用这些基本的数组运算和广播规则,不仅可以优化代码性能,还能提高算法实现的简洁度。
0 阅读:0

勒令课程

简介:感谢大家的关注