Python somme vs NumPy de numpy.somme

Quelles sont les différences dans les performances et le comportement entre l'utilisation de Python natif sum de fonction NumPy et de numpy.sum? sum fonctionne sur NumPy de tableaux et numpy.sum fonctionne sur Python, les listes et ils reviennent tous les deux le même résultat (n'ai pas testé les cas limites comme dépassement de capacité), mais différents types.

>>> 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'>

Edit: je pense que ma question ici est, serait à l'aide d' numpy.sum sur une liste de Python entiers plus rapidement qu'à l'aide de Python propre sum?

En outre, quelles sont les conséquences (y compris le rendement) de l'aide d'un Python entier par rapport à un scalaire numpy.int32? Par exemple, pour a += 1, est-il un comportement ou les performances de la différence si le type de a est un Python entier ou d'une numpy.int32? Je suis curieux de savoir si il est plus rapide d'utiliser un NumPy scalaire de type de données telles que numpy.int32 une valeur qui est ajoutée ou soustraite à beaucoup de choses dans le code Python.

Pour plus de précisions, je suis en train de travailler sur un bio-informatique de simulation qui se compose en partie de la réduction de multidimensionnelles numpy.ndarrays dans les scalaires, les sommes qui sont alors de plus traitées. Je suis à l'aide de Python 3.2 et NumPy 1.6.

Merci d'avance!

InformationsquelleAutor dpyro | 2012-06-06