Fonctions mathématiques avec NumPy

Ces fonctions sont accessibles grâce à NumPy.

>>> import numpy

Fonctions trigonométriques

numpy.sin(x) sinus
numpy.cos(x) cosinus
numpy.tan(x) tangente
numpy.arcsin(x) arcsinus
numpy.arccos(x) arccosinus
numpy.arctan(x) arctangente

Fonctions hyperboliques

numpy.sinh(x) sinus hyperbolique
numpy.cosh(x) cosinus hyperbolique
numpy.tanh(x) tangente hyperbolique
numpy.arcsinh(x) arcsinus hyperbolique
numpy.arccosh(x) arccosinus hyperbolique
numpy.arctanh(x) arctangente hyperbolique

Fonctions diverses

x**n x à la puissance n, exemple : x**2
numpy.sqrt(x) racine carrée
numpy.exp(x) exponentielle
numpy.log(x) logarithme népérien
numpy.abs(x) valeur absolue
numpy.sign(x) signe

Fonctions utiles pour les nombres complexes

numpy.real(x) partie réelle
numpy.imag(x) partie imaginaire
numpy.abs(x) module
numpy.angle(x) argument en radians
numpy.conj(x) complexe conjugué

Exemple

>>> import numpy as np
>>> x = np.array([ 2 + 3j, 1j, 1])
>>> np.real(x)
array([ 2.,  0.,  1.])
>>> np.imag(x)
array([ 3.,  1.,  0.])
>>> np.abs(x)
array([ 3.60555128,  1.        ,  1.        ])
>>> np.angle(x)
array([ 0.98279372,  1.57079633,  0.        ])
>>> np.conj(x)
array([ 2.-3.j,  0.-1.j,  1.-0.j])

Arrondis

numpy.around(x,n) arrondi à n décimales
numpy.trunc(x) retourne la partie entière du nombre (le nombre est tronqué)
>>> x = np.array([3.73637, 5.4374345])
>>> np.around(x,2)
array([ 3.74,  5.44])

around(x,0) retourne l’entier le plus proche.

>>> np.around(x,0)
array([ 4.,  5.])

Comparaison entre around(x,0) et trunc(x)

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-2, 2, 500)
plt.plot(x, np.around(x,0), label="around(x,0)")
plt.plot(x, np.trunc(x), label="trunc(x)")
plt.legend()

plt.show()

(Source code)

_images/arrondis_numpy.png

Nombres aléatoires

La fonction numpy.random.random() permet d’obtenir des nombres compris entre 0 et 1 par tirage aléatoire avec une loi uniforme. Il faut noter que ces nombres aléatoires sont générés par un algorithme et ils ne sont donc pas vraiment “aléatoires” mais pseudo-aléatoires. Ceci peut poser problème quand on a besoin de produire un grand nombre de valeurs ou pour de la cryptographie car les tirages ne sont pas vraiment indépendants, il faut alors étudier plus en détail les algorithmes utilisés.

La fonction numpy.random.random() peut être utilisée avec des arguments pour obtenir des tableaux. Les arguments précisent alors la forme (shape) du tableau souhaité.

>>> np.random.random()
0.5540884899329033
>>> np.random.random(3)
array([ 0.86431861,  0.88519197,  0.30663316])
>>> np.random.random((2,3))
array([[ 0.66265691,  0.39385577,  0.09319192],
       [ 0.43483474,  0.42859904,  0.79189574]])