1. 广播机制
当操作两个Numpy array时,Numpy会逐个dimension比较它们的shape,在下述情况下,两个array会兼容和输出broadcasting结果:
- 相等
- 对其中维度为1的进行拷贝拓展,直至shape匹配。(注意只能对维度1的进行拷贝扩展,倍数关系无法进行扩充)
- 当两个ndarray的维度不完全相同的时候,rank较小的那个ndarray会被自动在前面加上一个一维维度,直到与另一个ndarray rank相同再检查是否匹配
比如求和的时候有:
Image (3d array): 256 x 256 x 3
Scale (1d array): 3
Result (3d array): 256 x 256 x 3
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 (2d array): 5 x 4
B (1d array): 1
Result (2d array): 5 x 4
A (2d array): 15 x 3 x 5
B (1d array): 15 x 1 x 5
Result (2d array): 15 x 3 x 5
2. axis
numpy的运算中axis=0和axis=1往往让人不知所措。那我们如何更好的记忆呢?axis=0是朝垂直的方向运动计算,axis=1是朝水平的方向运动计算。如axis=0,可以想象成垂直方向上压缩或者拉伸。