可爱的 Python: Numerical Python
2007-03-29 12:14:19 来源:WEB开发网核心提示: Numarray 所做的一些改进:以分层的类结构来组织元素类型,以支持 isinstance() 检验,可爱的 Python: Numerical Python(3),Numeric 在指定数据类型时只使用字符类型编码 (但是 Numarray 中的初始化软件仍然接受老的字符编码),改变了
Numarray 所做的一些改进:
以分层的类结构来组织元素类型,以支持 isinstance() 检验。Numeric 在指定数据类型时只使用字符类型编码 (但是 Numarray 中的初始化软件仍然接受老的字符编码)。
改变了类型强制规则,以保持数组(更为常见)中的类型 ,而不是转换为 Python 标量的类型。
出现了附加的数组属性 (不再只有 getter 和 setter)。
实现了更灵活的异常处理。
新用户不必担心这些变化,就这一点来说,最好一开始就使用 Numarray 而不是 Numeric。
计时的例子
让我们来感受一下在 Numerical Python 中的操作相对于标准 Python 的速度优势。作为一个“演示任务”,我们将创建一个数字序列,然后使它们加倍。首先是标准 Python 方法的一些变体:
清单 5. 对纯 Python 操作的计时
def timer(fun, n, comment=""):
from time import clock
start = clock()
print comment, len(fun(n)), "elements",
print "in %.2f seconds" % (clock()-start)
def double1(n): return map(lambda n: 2*n, xrange(n))
timer(double1, 5000000, "Running map() on xrange iterator:")
def double2(n): return [2*n for n in xrange(n)]
timer(double2, 5000000, "Running listcomp on xrange iter: ")
def double3(n):
double = []
for n in xrange(n):
double.append(2*n)
return double
timer(double3, 5000000, "Building new list from iterator: ")
我们可以看出 map() 方法、list comprehension 和传统循环方法之间的速度差别。那么,需要同类元素类型的标准 array 模块呢?它可能会更快一些:
更多精彩
赞助商链接