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

可爱的 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 模块呢?它可能会更快一些:

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

Tags:可爱 Python Numerical

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