太原网站建设 网站制作,现在百度怎么优化排名,上海外贸网站,网站备案密码有什么用NumPy 提供了两种基本的对象#xff0c;即 ndarray 和 ufunc 对象。前面几节已经介绍了 ndarray#xff0c;本节将介绍 Numpy。ufunc 是 universal function 的缩写#xff0c;意思是“通用函数”#xff0c;它是一种能对数组的每个元素进行操作的函数。许多 ufunc 函数都是…NumPy 提供了两种基本的对象即 ndarray 和 ufunc 对象。前面几节已经介绍了 ndarray本节将介绍 Numpy。ufunc 是 universal function 的缩写意思是“通用函数”它是一种能对数组的每个元素进行操作的函数。许多 ufunc 函数都是用C语言级别实现的因此它们的计算速度非常快。此外ufun 比 math 模块中的函数更灵活。math 模块的输入一般是标量但 NumPy 中的函数可以是向量或矩阵而利用向量或矩阵可以避免使用循环语句这点在机器学习、深度学习中非常重要。表1NumPy 中的几个常用通用函数函数使用方法sqrt()计算序列化数据的平方根sin()、cos()三角函数abs()计算序列化数据的绝对值dot()矩阵运算log()、logl()、log2()对数函数exp()指数函数cumsum()、cumproduct()累计求和、求积sum()对一个序列化数据进行求和mean()计算均值median()计算中位数std()计算标准差var()计算方差corrcoef()计算相关系数math 与 numpy 函数的性能比较请看下面的代码import timeimport mathimport numpy as npx [i * 0.001 for i in np.arange(1000000)]start time.clock()for i, t in enumerate(x):x[i] math.sin(t)print (math.sin:, time.clock() - start )x [i * 0.001 for i in np.arange(1000000)]x np.array(x)start time.clock()np.sin(x)print (numpy.sin:, time.clock() - start )打印结果math.sin: 0.5169950000000005numpy.sin: 0.05381199999999886由此可见numpy.sin 比 math.sin 快近 10 倍。循环与向量运算比较充分使用 Python 的 NumPy 库中的内建函数(Built-in Function)来实现计算的向量化可大大地提高运行速度。NumPy 库中的内建函数使用了 SIMD 指令。如下使用的向量化要比使用循环计算速度快得多。如果使用 GPU其性能将更强大不过 Numpy 不支持 GPU。请看下面的代码import timeimport numpy as npx1 np.random.rand(1000000)x2 np.random.rand(1000000)##使用循环计算向量点积tic time.process_time()dot 0for i in range(len(x1)):dot x1[i]*x2[i]toc time.process_time()print (dot str(dot) \n for loop----- Computation time str(1000*(toc - tic)) ms)##使用numpy函数求点积tic time.process_time()dot 0dot np.dot(x1,x2)toc time.process_time()print (dot str(dot) \n verctor version---- Computation time str(1000*(toc - tic)) ms)输出结果dot 250215.601995for loop----- Computation time 798.3389819999998msdot 250215.601995verctor version---- Computation time 1.885051999999554ms从运行结果上来看使用 for 循环的运行时间大约是向量运算的 400 倍。因此在深度学习算法中一般都使用向量化矩阵进行运算。