Python numpy.square vs **

Est-il une différence entre numpy.square et à l'aide de la ** opérateur sur un tableau Numpy?

De ce que je peux voir, il donne le même résultat.

Des différences dans l'efficacité de l'exécution?

Un exemple pour la clarification:

In [1]: import numpy as np

In [2]: A = np.array([[2, 2],[2, 2]])

In [3]: np.square(A)
Out[3]: 
array([[4, 4],
       [4, 4]])

In [4]: A ** 2
Out[4]: 
array([[4, 4],
       [4, 4]])
Utilisation timeit pour vérifier lequel est le plus rapide, si c'est ce que vous êtes après.
Ils ne sont pas tout à fait la même, np.square() un élément sage quadrature, alors que certaines classes, par exemple, la matrice de la __pow__() opérateur fait quelque chose de différent. Pour le tableau de la classe, ils sont les mêmes. Changement array à matrix et voir la différence.
Aussi, x**2 (où x est un tableau numpy) peut vous donner quelques éléments négatifs, tandis que les np.carré(x) n'a pas

OriginalL'auteur Skeppet | 2015-03-31