当我们需要将数组内容广播到新形状时,我们可以使用NumPy提供的broadcast_to()函数。
函数定义
numpy.broadcast_to(array, shape, subok=False)
- array:需要广播成新形状的数组
- shape:新数组的形状
- subok:默认为False,表示返回的数组强制为基本类型。如果为True,则返回子类数组。
返回值:新形状的数组
函数示例
示例1:一维数组广播到二维数组
import numpy as np
# 定义一维数组,并广播成二维数组
arr = np.array([1, 2, 3])
arr_broadcasted = np.broadcast_to(arr, (3, 3))
# 打印数组
print("原数组arr为:\n", arr)
print("广播后的数组arr_broadcasted为:\n", arr_broadcasted)
输出结果为:
原数组arr为:
[1 2 3]
广播后的数组arr_broadcasted为:
[[1 2 3]
[1 2 3]
[1 2 3]]
通过broadcast_to()函数,将原本形状为(3,)的一维数组广播成形状为(3,3)的二维数组。
示例2:广播成非常规形状的数组
import numpy as np
# 定义一维数组,并广播成三维数组
arr = np.array([1, 2, 3])
arr_broadcasted = np.broadcast_to(arr, (2, 2, 3))
# 打印数组
print("原数组arr为:\n", arr)
print("广播后的数组arr_broadcasted为:\n", arr_broadcasted)
输出结果为:
原数组arr为:
[1 2 3]
广播后的数组arr_broadcasted为:
[[[1 2 3]
[1 2 3]]
[[1 2 3]
[1 2 3]]]
通过broadcast_to()函数,将原本形状为(3,)的一维数组广播成形状为(2,2,3)的三维数组。
除了以上两个示例,广播的形状可以非常灵活,只要是合法的形状,broadcast_to()函数都可以胜任。