Ich bin kürzlich auf eine great SO post gestoßen, in der ein Benutzer schlägt vor, dass numpy.sum
ist schneller als Pythons sum
, wenn es um den Umgang mit NumPy-Arrays kommt.Sind elementweise Vorgänge mit NumPy-Funktionen schneller als Operatoren?
Das hat mich dazu gebracht zu denken, sind Element-weise Operationen auf NumPy-Arrays schneller mit NumPy-Funktionen als Operatoren? Wenn ja, warum ist das der Fall?
Betrachten Sie das folgende Beispiel.
import numpy as np
a = np.random.random(1e10)
b = np.random.random(1e10)
Wird np.subtract(a, b)
zuverlässig schneller als a - b
?
'npsubtract' enthält zusätzlichen Code, um seine Argumente in Arrays umzuwandeln. So funktioniert 'npsubact ([1,2,3], [4,5,6])'. 'a-b' benötigt diesen zusätzlichen Code nicht, also ist es ein bisschen schneller. 'npsubtract' behandelt auch den 'out'-Schlüsselwortparameter ... – unutbu
Guter Punkt, @unutbu. Beide dieser zusätzlichen Merkmale von "np_subtract" sind einmalige Probleme beim Eintritt/Austritt der Funktion. Sie sind "O (1)", wenn Sie sie nicht verwenden, so dass sie bei größeren und größeren Arrays zunehmend vernachlässigbar werden. –