文章目录
1. 小试牛刀
前面已经说过,广播和矢量化是 NumPy 的精髓所在。所谓广播,就是将对数组的操作映射到每个数组元素上;矢量化可以理解为代码中没有显式的循环、索引等。如果用循环结构遍历 NumPy 数组,显然不符合 NumPy 的思想。可以说,使用 Numpy 的最高境界就是避免使用循环。如果代码中存在遍历 NumPy 数组的结构,就不是好的代码,就一定有优化空间。
下面,我们先用三个小问题来演示如何避免遍历 NumPy 数组。乍一看这三个问题,似乎不用循环就无法实现,但真正理解广播和矢量化的特性之后,我们就可以轻松解决。这三个问题,分别代表了 NumPy 数组最经典的三种应用模式。如果你已经读过《NumPy入门讲座》的前 4 讲,建议先尝试着不用循环的方法解决,然后再继续阅读后面的答案。
- ds 是随机数组,令小于0.5的元素为0,其余为1;
- ds 是随机整型数组,实现索引序号为偶数的元素自乘,其他元素不变;
- 酒精温度计是用液面高度映射温度的。一维数组 ca 表示液面高度和温度的对照关系:索引序号表