Python NumPy 广播(Broadcasting)
1、广播的规则
NumPy 广播是 NumPy 中的一个重要概念,它允许两个形状不同的数组进行运算。两个数组的后缘维度相同,或者在其中一方的维度为1。广播在缺失或者长度为1的维度上补充。
1)后缘维度
如果两个数组的后缘维度相同,则可以直接进行广播,无需进行任何扩展。
A为(3,4,5)的三维数组,B为(4,5)的二维数组。由于A和B的后缘维度都为(4,5),所以可以进行广播。
使用示例:Python NumPy 广播(Broadcasting)A为(2,3)的二维数组,B为(3,)的1为数组,后缘维度都是3,所以可以进行广播。
使用示例:Python NumPy 广播(Broadcasting)2)其中一方维度为1
如果两个数组的后缘维度不同,但其中一方维度的长度为 1,则另一方维度会被拉伸为与其相同的长度。
A为(4,5)的二维数组,B为(4,1)的二维数组,两者维度相同, B的数组中一个维度元素个数为1。
使用示例:Python NumPy 广播(Broadcasting)A为(4,5)的二维数组,B为(1,5)的二维数组,两者维度相同, B的数组中一个维度元素个数为1。
使用示例:Python NumPy 广播(Broadcasting)A为(4,5)的二维数组,B为(1,1)的二维数组,两者维度相同, B的数组中一个维度元素个数为1。
使用示例:Python NumPy 广播(Broadcasting)A为(4,5)的二维数组,B为(1,)的二维数组,两者维度相同, B的数组中一个维度元素个数为1。
使用示例:Python NumPy 广播(Broadcasting)2、广播的示例
广播机制可以应用于 NumPy 数组的各种运算,包括加法、减法、乘法、除法、比较运算、逻辑运算等。
1)向量与标量的运算
使用示例:Python NumPy 广播(Broadcasting)
2)二维数组与一维数组的运算
使用示例:Python NumPy 广播(Broadcasting)
3、广播的好处
广播机制可以让 NumPy 数组的运算更加灵活和高效,避免了需要对数组进行 reshape 操作的麻烦。理解和正确使用广播可以极大地提高数据处理和分析的效率。
1)内存高效
广播避免了不必要的内存分配,只是在算法层面上扩展较小的数组。
2)性能优化
广播可以减少大量数据的复制,提高计算性能。
3)代码简洁
可以直接对不同形状的数组进行运算,而不需要显式地调整它们的形状。