使用 Python 的本机 sum
函数和 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, 1, 2, 3, 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 自己的 sum
快吗?
此外,使用 Python 整数与使用标量 numpy.int32
相比有什么含义(包括性能) ?例如,对于 a += 1
,如果 a
的类型是 Python 整数还是 numpy.int32
,是否存在行为或性能差异?我很好奇,对于在 Python 代码中增加或减去很多的值,使用 NumPy 标量数据类型(如 numpy.int32
)是否会更快。
为了澄清,我正在进行一个生物信息学模拟,其中部分包括将多维 numpy.ndarray
折叠成单个标量和,然后再进行额外处理。我使用的是 Python 3.2和 NumPy 1.6。
先谢谢你!