NumPy基础(四)
一、广播
广播描述了 numpy 如何在算术运算期间处理具有不同形状的数组。受某些约束的影响,较小的数组在较大的数组上“广播”,以便它们具有兼容的形状。广播提供了一种矢量化数组操作的方法,以便在C而不是Python中进行循环。
什么是广播?
按照理论上,只有形状相同的数组才能进行操作。但numpy支持如下操作,这便是简单的广播:
>>> import numpy as np
>>> a = np.array([1,2,3])
>>> b = 3
>>> a * b
array([3, 6, 9])
一般广播规则
在以下示例中,A
和B
数组都具有长度为1的轴,在广播操作期间会扩展为更大的大小:
A (4d array): 8 x 1 x 6 x 1
B (3d array): 7 x 1 x 5
Result (4d array): 8 x 7 x 6 x 5
以下是不广播的形状示例:
A (1d array): 3
B (1d array): 4
A (2d array): 2 x 1
B (3d array): 8 x 4 x 3
广播提供了一种方便的方式来获取两个数组的外积(或任何其他外部操作)。以下示例显示了两个1-d数组的外积操作:
>>> a = np.array([0.0, 10.0, 20.0, 30.0])
>>> b = np.array([1.0, 2.0, 3.0])
>>> a[:, np.newaxis] + b
array([[ 1., 2., 3.],
[ 11., 12., 13.],
[ 21., 22., 23.],
[ 31., 32., 33.]])
具体详细广播内容请看:广播-broadcasting