当我们需要将ndarray数组中值扩展到更大的形状时,numpy提供了broadcast_to()函数。它会将输入数组的形状广播到给定的形状,并返回一个新的数组。该函数在进行模量、标量运算时很有用。下面详细介绍一下broadcast_to()函数的使用方法。
函数签名
numpy.broadcast_to(array, shape, subok = False) -> numpy.ndarray
参数说明
- array:输入的数组。
- shape:需要广播到的形状。
- subok:默认为False,表示如果返回的结果和输入数组共享内存,返回结果将会是相同类型的子类。
返回值
函数返回一个新的数组,新数组的形状与输入的shape参数相同。
示例说明
我们可以通过以下两个示例,更好的理解broadcast_to()函数的使用方法。
示例一
import numpy as np
x = np.array([[1, 2], [3, 4]])
y = np.broadcast_to(x, (3, 2, 2))
print(y)
输出结果:
array([[[1, 2],
[3, 4]],
[[1, 2],
[3, 4]],
[[1, 2],
[3, 4]]])
在该示例中,我们先定义了一个2×2的矩阵x,然后利用broadcast_to()函数,将矩阵x扩展到3x2x2的形状。最后输出得到了一个3x2x2的数组。该示例展示了我们如何通过broadcast_to()函数扩展一个二维矩阵到三维形状。
示例二
import numpy as np
x = np.array([1, 2, 3])
y = np.broadcast_to(x, (3, 3))
print(y)
输出结果:
array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])
在该示例中,我们定义了一个长度为3的一维数组x。之后利用broadcast_to()函数,将x扩展到一个3×3的数组。示例展示了我们如何将一维数组扩展到更高维度的形状。
以上两个示例展示了broadcast_to()函数的广播机制,其中第一个示例展示了如何将二维数组扩展到三维形状,第二个示例展示了如何将一维数组扩展到二维形状。在使用broadcast_to()函数时要注意,原数组和扩展后的数组会共享内存,因此修改其中一个数组会同时修改另一个数组。