What is Numpy

What is Numpy

Numpy是Python科学计算的基本包,提供对于多维数组(矩阵)等各种计算,比如c = a * b,a、b均为矩阵,可以对其进行直接计算,不用使用循环遍历。
本机测试计算速度为for循环遍历计算的500+倍(numpy是c代码)。例子如下:目前找不到源网页,直接粘上例子。

import numpy as np 
import time
#from timeit import timeit

a = np.random.rand(1000000)
b = np.random.rand(1000000)

time_s = time.time()
c = np.dot(a, b)
time_e = time.time()
print(c, 1000*(time_e - time_s))

c = 0
time_s = time.time()
for i in range(len(a)):
    c += a[i] * b[i]
time_e = time.time()
print(c, 1000*(time_e - time_s))

下图所示
vectorization

矢量化(Vectorization)

上面的例子是矢量化的例子(Vectorization),包含以下优点:

  • 代码更简洁
  • 更少的代码通常意味着更少的错误
  • 代码运行更接近标准的数学符号,封装了具体的困难的运算,如上np.dot(a, b)直接计算两个矩阵的积。
  • 矢量化导致更多的“Pythonic”(网络解释为很Python的Python代码)代码。如果没有向量化,我们的代码将会效率很低,难以读取for循环。

广播(Broadcasting)

广播是用于描述操作的隐式逐个元素行为的术语
大概意思就是比如做矩阵的运算,a为一维矩阵,b为标量,如果做计算a + b,会自动的将a的元素都加上b(我的简单理解)

源网站

Numpy 中文 API