numpy高级应用—广播

广播

  • 广播与数组运算
    • 1)标量在数组中的广播
    • 2)数组在数组中的广播
    • 3)numpy数组创建新轴—newaxis属性
  • 通过广播设置数组的值

广播与数组运算

1)标量在数组中的广播

广播指的是不同形状的数组之间执行算术运算。最简单的广播就是下方这样的形式,
在这里插入图片描述
标量值4被广播到了arr的每个元素上。

2)数组在数组中的广播

下方的代码中,arr.mean 得到的是一个降一维度的数组,能够在之前的数组中广播。
numpy高级应用—广播_第1张图片
每列元素减去列平均值这样的对列进行距平化处理也是通过广播实现的。
numpy高级应用—广播_第2张图片
一维数组与二维数组的运算的广播过程,在一个轴上进行广播,使得广播后两个数组形状相同。广播建立在两个数组的后缘维度的概念上,广播会在缺失(少一维)或长度为1(标量)的维度上进行。

广播经常会让人觉得晕,最好的办法是停下来画一张图回忆广播的原则。
numpy高级应用—广播_第3张图片
具体图示如下,
numpy高级应用—广播_第4张图片
如果是缺少某个维度,则广播会补齐该维度,具体过程为,
numpy高级应用—广播_第5张图片
维度大于等于三维后,广播就更难理解了,如果维度错误的话会报出ValueError的错误,根据广播的原则,低维度的数组,用于广播的维度(广播维)必须为1。
numpy高级应用—广播_第6张图片

3)numpy数组创建新轴—newaxis属性

一维广播至二维;二维广播三维这样的形式都可以理解为在最开始的源数组上添加一个轴,如果每次广播都要像之前使用reshape方法。如,arr是个一维数组(4,)使用reshape方法,arr.reshape((4,1))。专门构建一个轴,这个过程是很繁琐的。

所以numpy数组提供一个newaxis属性,可以与数组的切片结合,直接构建一个新的轴,
numpy高级应用—广播_第7张图片
在这里插入图片描述
在这里插入图片描述
之前的距平化处理也可以通过newaxis属性的使用达到效果,
numpy高级应用—广播_第8张图片

通过广播设置数组的值

numpy高级应用—广播_第9张图片
在这里插入图片描述
numpy高级应用—广播_第10张图片

你可能感兴趣的:(numpy库)