Python numpy.broadcast_to()函数

  • Post category:Python

下面是Python numpy.broadcast_to()函数的详细讲解:

函数简介

numpy.broadcast_to(array, shape, subok=False)函数将数组array沿着指定的shape进行扩展,返回一个新的数组,新数组的形状为shape。如果扩展后的形状与原始形状不兼容,则会抛出ValueError异常。

函数参数

  • array: 需要扩展的数组,可以是任意维度的数组。
  • shape: 扩展后的形状,可以是一个整数、一个元组或者一个序列。
  • subok: 布尔类型变量,默认为False,表示返回的扩展后的数组是否为ndarray类型。

示例说明

下面通过两个例子来说明numpy.broadcast_to()函数的使用:

示例一


import numpy as np

# 创建一个形状为(2, 3)的二维数组
a = np.array([[0, 1, 2], [3, 4, 5]])

# 扩展成形状为(2, 4, 3)的三维数组
b = np.broadcast_to(a, (2, 4, 3))

print("原始数组a:\n", a)
print("扩展后的数组b:\n", b)

输出结果为:

原始数组a:
 [[0 1 2]
 [3 4 5]]
扩展后的数组b:
 [[[0 1 2]
  [3 4 5]
  [0 1 2]
  [3 4 5]]

 [[0 1 2]
  [3 4 5]
  [0 1 2]
  [3 4 5]]]

说明:a为形状为(2, 3)的二维数组,用numpy.broadcast_to(a, (2, 4, 3))将其扩展成了形状为(2, 4, 3)的三维数组b

示例二


import numpy as np

# 构造一个形状为(3, 4)的二维数组
a = np.arange(12).reshape(3, 4)

# 扩展为形状为(2, 3, 4)的三维数组
b = np.broadcast_to(a, (2, 3, 4))

# 修改b[0, 0, 0]的值
b[0, 0, 0] = -1

print("原始数组a:\n", a)
print("扩展后的数组b:\n", b)

输出结果为:

原始数组a:
 [[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]
扩展后的数组b:
 [[[-1  1  2  3]
  [-1  5  6  7]
  [-1  9 10 11]]

 [[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]]

说明:在本例子中,我们首先构造了一个形状为(3, 4)的二维数组a,然后使用numpy.broadcast_to(a, (2, 3, 4))将其扩展为空间形状为(2, 3, 4)的三维数组b。最后我们修改了b[0, 0, 0]的值,并将其赋值为-1。可以看到,修改了b[0, 0, 0]的值之后,a的值也相应的被改变了。这是因为numpy.broadcast_to()返回的是一个引用,而不是一个全新的数组。