1.2 - Numpy数组的计算和广播
1.2.1 数组计算
Numpy数组的算数运算和比较运算,都是 逐元素操作的。
import numpy as np arr1 = np.linspace(1, 8, 8, dtype=int).reshape(2, 2, 2) print(arr1 + 1) print(arr1 - 1) print(arr1 * 2) print(arr1 / 2) print('0----------------------0') arr2 = np.full((2, 2), fill_value=2, dtype=int) print(arr1 + arr2) print(arr1 * arr2)
1.2.2 Numpy数组的广播
在1.2.1中,数组与数组进行运算的时候,arr1和arr2的shape虽然并不相同但是也可以进行运算,因为发生了广播。
a)广播触发条件:1.后缘维度相同 2.对于同一个维度,如果维度不同,那么有一方的维度为1。
b)广播的形象解释:数组计算的时候要求两个数组的shape相同,如果不同:如果一方的后缘维度相同只是缺少前面的维度,维度少的数组会复制自身凑成一个新的维度并向维度多的数组看齐,就可以保证两个数组的shape相同(复制整个数组本身);如果两个数组shape的某个维度不同,但是其中一个数组的这个维度的值是1,那么比较短的那个数组,会从 维度为1的那个维度开始,该维度及其后面的维度构成的子数组会进行复制并向比较长的数组看起。(复制维度为1及其后面维度构成的子数组)