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]])