NumPy

De Viquipèdia
Dreceres ràpides: navegació, cerca
Numpylogo.png
Autor original Travis Oliphant
Desenvolupador(s) Comunitat NumPy
Versió inicial 1995 (1995)
Versió estable

1.8.0

/ Novembre 10, 2013; fa 4 mesos (2013-11-10)
Sistema operatiu Multiplataforma
Tipus Programari d'anàlisi numèrica
Llicència Llicència BSDLlicència NumPy
Lloc web numpy.org

NumPy és una extensió de Python, que li agrega major suport per vectors i matrius, constituint una biblioteca de funcions matemàtiques d'alt nivell per operar amb aquests vectors o matrius.[1] El predecessor de NumPy, Numeric, va ser creat originalment per Jim Hugunin amb contribucions d'altres desenvolupadors. El 2005, Travis Oliphant va crear NumPy incorporant característiques de Numarray a NumPy amb algunes modificacions. NumPy és codi obert i té múltiples desenvolupadors.

Avantatges[modifica | modifica el codi]

Com que Python està implementat com un intèrpret i no com un compilador, els algorismes matemàtics escrits en Python generalment s'executen més lentament que els seus equivalents en llenguatges compilats. NumPy vol solucionar aquest problema per a algorismes numèrics creant operadors i funcions eficients per a vectors multidimensionals. Això fa que qualsevol algorisme que es pugui expressar primàriament com a operacions amb vectors i matrius pot executar-se tant ràpid com ho faria l'algorisme equivalent en llenguatge C.[2]

Python aconsegueix una funcionalitat similar a la de Matlab usant la biblioteca NumPy, ja que ambdós llenguatges són interpretats i ambdós permeten a l'usuari programar algorismes ràpids i eficients sempre que les seves operacions es pugui reduir al tractament de vectors o de matrius enlloc d'usar escalars. En comparació Matlab té un nombre gran de llibreries, a destacar la llibreria Simulink, mentre que NumPy està integrat amb Python, un llenguatge més modern i de codi obert. A més a més, Python disposa de biblioteques complementaries com és ara SciPy, que és una llibreria que fa que les funcionalitats de Python siguin similars a les de Matlab, i Matplotlib que és una biblioteca de recursos gràfics similars a MATLAB. Internament, tant MATLAB com NumPy estan basat en les biblioteques BLAS i LAPACK per executar els càlculs algebraics eficientment.[3]

Exemples[modifica | modifica el codi]

Resultat del codi

El següent és un exemple de com Numpy manipula vectors i els dibuixa en un gràfic usant la llibreria matplotlib.

import numpy
from matplotlib import pyplot
 
# Creant les funcions usant numpy
x = numpy.linspace(0,2*numpy.pi, 100)
sn = numpy.sin(x)
cn = numpy.cos(x)
 
# Dibuixant les funcions usant matplotlib
pyplot.plot(x, sn, 'k', label='Sinus')
pyplot.plot(x, cn, 'r',label='Cosinus')
pyplot.grid(True)
pyplot.legend(loc = 'best',shadow = True)
pyplot.ylabel("Amplitud")
pyplot.xlabel("Temps [segons]")
pyplot.title('Exemple matplotlib i numpy')
pyplot.show()

El següent exemple mostra la llibreria Numpy manipulant algebraicament matrius i vectors

>>> from numpy.random import rand
>>> from numpy.linalg import solve,inv
>>> a = np.array([[1,2,3],[3,4,6.7],[5,9.0,5]])
>>> a.transpose()  
array([[ 1. ,  3. ,  5. ],
       [ 2. ,  4. ,  9. ],
       [ 3. ,  6.7,  5. ]])
>>> inv(a)
array([[-2.27683616,  0.96045198,  0.07909605],
       [ 1.04519774, -0.56497175,  0.1299435 ],
       [ 0.39548023,  0.05649718, -0.11299435]])
>>> b =  array([3,2,1])
>>> np.solve(a,b) # Solucionant l'equació ax = b
array([-4.83050847,  2.13559322,  1.18644068])
>>> c = rand(3,3) # Creant una matriu 3x3 aleatòria
>>> c
array([[  3.98732789,   2.47702609,   4.71167924],
       [  9.24410671,   5.5240412 ,  10.6468792 ],
       [ 10.38136661,   8.44968437,  15.17639591]])
>>> np.dot(a,c)  # multiplicació de matrius
array([[  3.98732789,   2.47702609,   4.71167924],
       [  9.24410671,   5.5240412 ,  10.6468792 ],
       [ 10.38136661,   8.44968437,  15.17639591]])

Referències[modifica | modifica el codi]

  1. «What is NumPy?» (en anglès). numpy.org. [Consulta: 28 gener 2014].
  2. «SciPy PerformancePython» (en anglès). [Consulta: 28 gener 2014].
  3. «NumPy for Matlab Users» (en anglès). numpy.org. [Consulta: 28 gener 2014].

Vegeu també[modifica | modifica el codi]

Enllaços externs[modifica | modifica el codi]