Python的总和vs. NumPy的numpy.sum
发布时间:2020-12-20 10:34:43 所属栏目:Python 来源:网络整理
导读:使用 Python的本机和函数和NumPy的numpy.sum之间在性能和行为上有什么不同? sum适用于NumPy的数组,numpy.sum适用于Python列表,它们都返回相同的有效结果(没有测试边缘情况,如溢出)但不同的类型. import numpy as np np_a = np.array(range(5)) np_aarray([0
使用
Python的本机和函数和NumPy的numpy.sum之间在性能和行为上有什么不同? sum适用于NumPy的数组,numpy.sum适用于Python列表,它们都返回相同的有效结果(没有测试边缘情况,如溢出)但不同的类型.
>>> import numpy as np >>> np_a = np.array(range(5)) >>> np_a array([0,1,2,3,4]) >>> type(np_a) <class 'numpy.ndarray') >>> py_a = list(range(5)) >>> py_a [0,4] >>> type(py_a) <class 'list'> # The numerical answer (10) is the same for the following sums: >>> type(np.sum(np_a)) <class 'numpy.int32'> >>> type(sum(np_a)) <class 'numpy.int32'> >>> type(np.sum(py_a)) <class 'numpy.int32'> >>> type(sum(py_a)) <class 'int'> 编辑:我认为我的实际问题是在Python整数列表中使用numpy.sum比使用Python自己的总和更快吗? 另外,使用Python整数与标量numpy.int32有什么影响(包括性能)?例如,对于a = 1,如果a的类型是Python整数或numpy.int32,是否存在行为或性能差异?我很好奇是否更快地使用NumpPy标量数据类型(如numpy.int32)来获取在Python代码中添加或减去很多的值. 为了澄清,我正在进行生物信息学模拟,其中部分包括将多维numpy.ndarray折叠成单个标量和,然后进行额外处理.我使用的是Python 3.2和NumPy 1.6. 提前致谢! 解决方法
我好奇并定时了.对于numpy数组,numpy.sum似乎要快得多,但在列表上要慢得多.
import numpy as np import timeit x = range(1000) # or #x = np.random.standard_normal(1000) def pure_sum(): return sum(x) def numpy_sum(): return np.sum(x) n = 10000 t1 = timeit.timeit(pure_sum,number = n) print 'Pure Python Sum:',t1 t2 = timeit.timeit(numpy_sum,number = n) print 'Numpy Sum:',t2 x = range(1000)时的结果: Pure Python Sum: 0.445913167735 Numpy Sum: 8.54926219673 x = np.random.standard_normal(1000)时的结果: Pure Python Sum: 12.1442425643 Numpy Sum: 0.303303771848 我使用的是Python 2.7.2和Numpy 1.6.1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |