向量化计算

一种特殊的并行计算的方式,它可以在同一时间执行多次操作,通常是对不同的数据执行同样的一个或一批指令,或者说把指令应用于一个数组/向量。

生成等差数列

numpy.arange(start, end, step); #开始值 结束值 步长

  1. #生成一个整数的等差序列
  2. #局限只能用于遍历
  3. r1_10 = range(1, 10, 2)
  4. for i in r1_10:
  5. print(i)
  6. #1
  7. #3
  8. #5
  9. #7
  10. #9
  11. #r1_10 = range(0.1, 10, 2) 这样会抛出TypeError: 'float' object cannot be interpreted as an integer
  12. import numpy
  13. numpy.arange(0.1, 0.5, 0.01)
  14. r = numpy.arange(0.1, 0.2, 0.01)
  15. for i in r:
  16. print(i)
  17. #内存值,输出值(注意)
  18. #0.1 0.1
  19. #0.11 0.11
  20. #0.12 0.12
  21. #0.13 0.13
  22. #0.14 0.13999999999999999
  23. #0.15 0.14999999999999997
  24. #0.16 0.15999999999999998
  25. #0.17 0.16999999999999998
  26. #0.18 0.17999999999999997
  27. #0.19 18999999999999995

四则运算

规则:相同位置的的数据进行运算,结果保留在相同的位置
语法: S1 op S2

  1. #接上面的
  2. #向量化运算
  3. r + r
  4. r - r
  5. r * r
  6. r / r

函数计算

规则:相同位置的数据进行函数的计算,函数返回结果保留在相同的位置
语法:fun(x)

  1. #函数式的向量化计算
  2. numpy.power(r, 5)
  3. #Out[17]: array([1.000000e-05, 1.610510e-05, 2.488320e-05, 3.712930e-05,
  4. # 5.378240e-05, 7.593750e-05, 1.048576e-04, 1.419857e-04,
  5. # 1.889568e-04, 2.476099e-04])
  6. #向量化运算,比较运算
  7. r>0.3
  8. #Out[17]: array([False, False, False, False, False, False, False, False, False,False])
  9. #结合过滤使用
  10. r[r>0.3]
  11. #Out[17]: array([], dtype=float64)

向量化计算的原则

原则: 代码中尽可能避免显式的for循环,过早的优化是魔鬼