对于Numpy的广播,其实很多时候不知不觉的在使用,比如将一维向量或者二维向量直接与单个数字相加,结果会是向量的每个元素都加上了这个数字,这就用到了广播。
广播的概念,其实可以归结为用于不同大小数组的二元通用函数(加、减、乘等)的一组规则。
总结来说,广播的规则有三个:
如果两个数组的维度数dim不相同,那么小维度数组的形状将会在左边补1
如果shape维度不匹配,但是有维度是1,那么可以扩展维度是1的维度匹配另一个数组;
如果shape维度不匹配,但是没有任何一个维度是1,则匹配引发错误;
其中第1个和第2个规则,用于真实的计算中进行的试图匹配,规则3意思是不匹配的情况。
接下来进行几个演示。
import numpy as np
案例1:二维数组加一维数组
准备数组a:
a = np.ones((2,3))aarray([[1., 1., 1.], [1., 1., 1.]])
准备数组b:
b = np.arange(3)barray([0, 1, 2])
查看shape: