Numpy加速的关键 -- 使用优化的方法

本文通过对比Python内置函数与Numpy的不同使用方式,展示了如何利用Numpy优化数组操作的执行效率。实验表明,直接使用Numpy的基本算术运算可能并不会提升性能,而利用Numpy提供的高级函数如np.dot则能显著提高速度。

# -*- coding: utf-8 -*-
"""
Created on Sun Oct 23 20:05:57 2016

@author: zang
"""

import timeit

normal_py_sec = timeit.timeit('sum(x*x for x in xrange(1000))', number=10000)
naive_np_sec = timeit.timeit('sum(na*na)', setup="import numpy as np;na=np.arange(1000)",number=10000)
good_np_sec = timeit.timeit('na.dot(na)', setup="import numpy as np;na=np.arange(1000)",number=10000)


print "Normal Python: %f sec" % normal_py_sec
print "Naive Numpy: %f sec" % naive_np_sec
print "Good Numpy: %f sec" % good_np_sec

运行结果:

Normal Python: 0.630046 sec
Naive Numpy: 0.949492 sec
Good Numpy: 0.012041 sec

Naive Numpy只是将数组放入Numpy存储,这时比Python标准列表花的时间还要长,
最快的是使用 np.dot 方法的时候,所以在优化的时候,

要时长考虑将数组元素的循环操作从Python中移到一些高度优化的Numpy或者Scipy**扩展函数**中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值