NumPy

De Viquipèdia
Salta a: navegació, cerca
Infotaula de programariNumPy
Numpy example.png
Creador/s Travis Oliphant
Desenvolupador(s) Comunitat NumPy
Versió inicial 1995
Versió estable

1.8.0

/ Novembre 10, 2013; fa 4 anys (2013-11-10)
Escrit en Python i C
Sistema operatiu Multiplataforma
Tipus Programari d'anàlisi numèrica
Llicència Llicència BSDLlicència NumPy
Més informació
Lloc web Web oficial
Codi font Codi font
Stack Exchange Etiqueta
Seguiment d'errors Pàgina de seguiment d'errors
Modifica dades a Wikidata

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]

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 en lloc 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 complementàries 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 basats en les biblioteques BLAS i LAPACK per executar els càlculs algebraics eficientment.[3]

Exemples[modifica]

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]

  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]

Enllaços externs[modifica]

A Wikimedia Commons hi ha contingut multimèdia relatiu a: NumPy Modifica l'enllaç a Wikidata