Numpy广播:将Python函数传播到Numpy数组上
在本文中,我们将介绍Numpy广播的基本概念、例子和如何在Python函数中应用广播。
阅读更多:Numpy 教程
Numpy广播的基本概念
Numpy广播是一种强大的机制,它可以让Numpy在不同形状的数组之间执行数学运算,而无需复制数据。这通常可以让运算代码更简洁和更快。
广播的规则如下:
- 如果两个数组的维度不同,则在较小的维度的左侧添加一个值为1的维度,直到维度数相同。
- 如果两个数组的形状在任何一维中不同,但仍可以基于以下规则广播,那么它们也可以进行广播。
- 数组的形状在维度上匹配。
- 数组的形状在某个维度上为1。
例如,如果有一个形状为(2,1,3)的数组,和另一个形状为(1,2,3)的数组,则它们可以进行广播。
输出:
C数组的形状是(1,2,3),它是A和B数组的和。这是通过广播实现的,其中B数组被扩展成(1,2,3)形状以匹配A数组的形状。
Numpy广播的例子
下面是另外一个例子。
输出:
在这个例子中,a和b都是形状为(3,)的一维数组,所以它们可以直接相加而无需进行广播。
还有一个例子,其中一个数组的形状是(2,1),另一个数组是标量。
输出:
在这个例子中,标量值b被广播成与a相同的形状。
如何在Python函数中应用广播
Numpy广播可以在普通Python函数中使用。对于一个二维数组,我们可以将一个函数应用于它的每一行或每一列。例如,我们可以编写一个函数,将每一行的最大值相加,并将结果存储在一个一维数组中。
输出:
在这个例子中,np.amax函数用于计算每一行的最大值,axis=1表示在每一行上执行。函数np.sum将每一行的最大值相加,生成标量值24。
总结
Numpy广播是一个非常强大的功能,可以让我们更方便地进行数据操作。它的实现机制很简单,可以很容易地使用在各种数据操作中。在这篇文章中,我介绍了Numpy广播的基本概念和简单示例,同时还演示了如何在Python函数中应用广播。掌握Numpy广播对于数据科学和机器学习都非常有帮助,因为可以用更少的代码实现更快速的计算。