Python numpy.broadcast_to()函数

  • Post category:Python

当我们需要将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()函数时要注意,原数组和扩展后的数组会共享内存,因此修改其中一个数组会同时修改另一个数组。