WEB开发网
开发学院软件开发Python 可爱的 Python: Numerical Python 阅读

可爱的 Python: Numerical Python

 2007-03-29 12:14:19 来源:WEB开发网   
核心提示: 清单 6. 对标准 array 模块的计时import arraydef double4(n): return [2*n for n in array.array('i',range(n))]timer(double4, 5000000, "Running lis

清单 6. 对标准 array 模块的计时

import array
def double4(n): return [2*n for n in array.array('i',range(n))]
timer(double4, 5000000, "Running listcomp on array.array: ")

最后我们来看 Numarray 的速度如何。作为额外对照,我们来看如果必须要将数组还原为一个标准的列表时,它是否同样具有优势:

清单 7. 对 Numarray 操作的计时

from numarray import *
def double5(n): return 2*arange(n)
timer(double5, 5000000, "Numarray scalar multiplication: ")
def double6(n): return (2*arange(n)).tolist()
timer(double6, 5000000, "Numarray mult, returning list:  ")

现在运行它:

清单 8. 比较结果

$ python2.3 timing.py
Running map() on xrange iterator: 5000000 elements in 13.61 seconds
Running listcomp on xrange iter: 5000000 elements in 16.46 seconds
Building new list from iterator: 5000000 elements in 20.13 seconds
Running listcomp on array.array: 5000000 elements in 25.58 seconds
Numarray scalar multiplication:  5000000 elements in 0.61 seconds
Numarray mult, returning list:  5000000 elements in 3.70 seconds

处理列表的不同技术之间的速度差异不大,也许还是值得注意,因为这是尝试标准的 array 模块时的方法问题。但是 Numarray 一般用不到 1/20 的时间内就可以完成操作。将数组还原为标准列表损失了很大的速度优势。

不应通过这样一个简单的比较就得出结论,但是这种加速可能是典型的。对大规模科学计算来说,将计算的时间由几个月下降到几天或者从几天下降到几个小时,是非常有价值的。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:可爱 Python Numerical

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接