下面是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()
返回的是一个引用,而不是一个全新的数组。