在NumPy中,广播(broadcasting)指的是不同形状的数组之间进行算术运算的规则。当两个数组的形状不同时,如果满足一些特定的条件,NumPy将自动地对它们进行广播以使得它们的形状相同。
广播的规则如下:
-
当两个数组的形状长度不同时,在较短的数组的前面加上若干个1,直到长度与较长的数组相同。
-
如果两个数组的形状在任何一个维度上不同且不同维度的长度不同,那么在进行广播之前,NumPy会比较它们的各维度长度。当满足以下任一条件时,认为这两个数组在该维度上是兼容的:
-
两个数组在这个维度上的长度相等
-
其中一个数组在这个维度上长度为1
-
如果两个数组在所有维度上都兼容,它们可以一起使用。
-
对于任何维度,其中一个数组长度为1,另一个数组长度大于1,第一个数组的元素在这个维度上重复,以匹配第二个数组的长度。
举个例子,假设有两个数组a和b,它们的形状分别为(3, 2)和(2,),那么可以使用广播将它们进行相加,具体如下:
a = np.array([[1, 2], [3, 4], [5, 6]])
b = np.array([1, 2])
c = a + b
输出结果为:array([[2, 4], [4, 6], [6, 8]])
在这个例子中,数组a的形状为(3, 2),数组b的形状为(2,),但是它们可以通过广播规则相加,产生形状为(3, 2)的结果数组c。具体来说,数组b被扩展为形状为(1, 2)的数组,然后复制成形状为(3, 2)的数组,与数组a进行相加得到结果数组c。
本文链接:https://my.lmcjl.com/post/19759.html
展开阅读全文
4 评论