4.1.numpy

4

Click here to load reader

Upload: richard-ore-cayetano

Post on 18-Aug-2015

216 views

Category:

Documents


1 download

DESCRIPTION

python

TRANSCRIPT

4.1.NumpyAutores:JosMaraHerreraFernndez,LuisMiguelSnchezBreaContenidosdeestecaptulo:CargadeunarchivodedatosArraysMatricesOperacionesyfuncionesUnodelosmdulosmsimportantesdePythonesNumpy.ElorigendeNumpysedebeprincipalmentealdiseadordesoftwareJimHuguninquiendiseelmduloNumericparadotaraPythondecapacidadesdeclculosimilaresalasdeotrossoftwarescomoMATLAB.Posteriormente,mejorNumericincorporandonuevasfuncionalidadesnaciendoloquehoyconocemoscomoNumpy.Numpy es el encargado de aadir toda la capacidad matemtica y vectorial a Python haciendo posible operar concualquierdatonumricooarray(posteriormenteveremosquesunarray).Incorporaoperacionestanbsicascomolasuma o la multiplicacin u otras mucho ms complejas como la transformada de Fourier o el lgebra lineal. AdemsincorporaherramientasquenospermitenincorporarcdigofuentedeotroslenguajesdeprogramacincomoC/C++oFortranloqueincrementanotablementesucompatibilidadeimplementacin.Parapoderutilizarestemdulosinohemosinstaladopython(x,y)loprimeroquedebemosdehaceresdescargarnoslaltima versin desde el sitio oficial http://www.scipy.org/Download. En caso de que nuestro sistema operativo seaLinuxprobablementevengainstaladodentrodePython.Denoserasdebemosinstalarloporelmtodohabitual.Params informacin y otros sistemas operativos consultar las notas oficiales de instalacin. Para cargar el mdulo enPythonypoderllamarlodeformarmscmodaesdeusoextendidolautilizacindelaliasnp,importnumpyasnp4.1.1.CargadeunarchivodedatosEn el mbito cientfico es frecuente almacenar y trasladar paquetes de datos en archivos escritos en, por ejemplo,cdigoASCII.Pythonincorporavariasfuncionesquenospermitenlalecturayescrituraenestosarchivosfacilitandosumanejo.Unejemplodeelloeselcomandoloadtxtquenospermitecargarlosdatoscontenidosenunarchivodetextoodat.Ejemplo4.1>>>importnumpyasnp#Importamosnumpycomoelaliasnp#Cargamoslosdatosdearchivo.txtendatos.Enestecasoeldelimitadoreslacoma.>>>datos=numpy.loadtxt('C:\ruta\a\tu\archivo.txt',delimiter=',')Ejemplo4.2>>>importnumpyasnp#Importamosnumpycomoelaliasnp.>>>archivoDatos=np.loadtxt('codigo\archivoDatos.dat')>>>print(archivoDatos)#Presentamosenpantallalosdatoscargados.Ejemplo4.3>>>fromStringIOimportStringIO#StringIOsecomportacomounarchivoobjeto.>>>c=StringIO("01\n23")>>>np.loadtxt(c)array([[0.,1.],[2.,3.]])4.1.2.ArraysContodaprobabilidad,ellectorquehayarealizadounacercamientoacualquierlenguajedeprogramacinhabrodohablar de arrays. Un array es el termino que traslada el concepto matemtico de vector o matriz a la programacinaadindole la nocin de almacenamiento en memoria. Los arrays disponen en su interior de una serie de elementosdispuestosenfilasy/ocolumnasdependiendodeladimensin.TABLA DE CONTENI DOSAutoresQuesnuevoLicenciaDescargasReferencias1.Introduccin2.PuestaenMarcha3.LenguajesdeProgramacin4.MdulosCientficos5.EcuacionesdeMaxwellenelvaco6.Polarizacin7.Interaccinradiacinmateria8.ndicederefraccin:modelomicroscpico9.EcuacionesdeFresnel10.Pulsosdeluz11.Interferencias12.Mdulosdeptica13.Difraccinencampocercano14.Difraccinencampolejano15.RedesdeDifraccin16.ProcesadopticodelainformacinBSQUEDA IraIntroduzcalostrminosdebsquedaounnombredemdulo,claseofuncin.Computacin cientfica con Python para mdulos de evaluacin continuaen asignaturas de ciencias aplicadasANTERI OR|SI GUI ENTEEl desarrollo y la principal finalidad del mdulo Numpy es la creacin y modificacin de arrays multidimensionales.Para este fin utilizaremos las clase ndarray del ingles Ndimensionalarray o usando su alias simplemente array (noconfundirconlaclasearray.arrayqueofrecemenosfuncionalidad).EnPythoncadaclasepuedeteneratributosquesepueden llamar con el mtodo visto anteriormente o simplemente escribiendo a continuacin de la clase un punto y elatributo. En la mayora de los IDEs al cargar la clase y escribir el punto aparecen todos los atributos disponibles enordenalfabticoporloqueencasodedudarsiemprepodemosutilizarestemtodoparaescribirelcomando.Enelcasodendarraylosprincipalesatributossonlossiguientes:ndarray.ndim > Proporciona el nmero de dimensiones de nuestro array. El array identidad es un arraycuadradoconunadiagonalprincipalunitaria.ndarray.shape>Devuelveladimensindelarray,esdecir,unatupladeenterosindicandoeltamaodelarrayencadadimensin.Paraunamatrizdenfilasymcolumnasobtendremos(n,m).ndarray.size>Eselnmerototaldeelementosdelarray.ndarray.dtype>Esunobjetoquedescribeeltipodeelementosdelarray.ndarray.itemsize>devuelveeltamaodelarrayenbytes.ndarray.data>Elbuffercontieneloselementosactualesdelarray.Veamosunejemplodesuusoconunarraysencillodediezelementos,Ejemplo4.4>>>importnumpyasnp#Importamosnumpycomoelaliasnp>>>miArray=np.arange(10)#Creamosunarrayde0a9separadosdeunoenuno>>>miArray#Presentamosenpantallaelarraycreadoarray([0,1,2,3,4,5,6,7,8,9])>>>type(miArray)#Comprobamosqueesunndarray

>>>miArray.ndim#Consultamoselnmerodedimensiones1>>>miArray.shape#Consultamosladimensin(10,)>>>miArray.size#Consultamosladimensin10>>>miArray.dtype#Consultamoseltipodeelementosdelarraydtype('int64')>>>miArray.itemsize#tamaoenbytes8>>>miArray.data#Consultamoselbufferdememoria.

Comohemosmencionandoanteriormente,losarrayssonunosdeloselementosmsutilizadosporlosprogramadoresbajo cualquier lenguaje. Este gran uso hace que dispongamos de una gran variedad de comandos para la creacin dearrays: arrays unidimensionales, multidimensionales, nulos, unitarios, secuenciales, de nmeros aleatorios, etc.Dependiendodelasnecesidadesdenuestroproblemaescogeremoslaopcinmsadecuada.identity(n,dtype). Devuelve la matriz identidad, es decir, uma matriz cuadrada nula excepto en su diagonalprincipalqueesunitaria.n es el nmero de filas (y columnas) que tendr la matriz y dtypeeseltipo dedato.Esteargumentoesopcional.Sinoseestablece,setomapordefectocomoflotante.ones(shape,dtype).Creaunarraydeunoscompuestodeshapeelementos.zeros(shape,dtype).Creaunarraydeceroscompuestodeshapeelementos.empty(shape,dtype).Creaunarraydeceroscompuestodeshapeelementossinentradas.eye(N, M, k, dtype). Crea un array bidimensional con unos en la diagonal k y ceros en el resto. Es similar aidentity.Todoslosargumentossonopcionales.Neselnmerodefilas,Meldecolumnasykeselndicedeladiagonal.Cuandok=0nosreferimosaladiagonalprincipalyportantoeyeessimilaraidentity.arange([start,]stop[,step,],dtype=None).Creaunarrayconvaloresdistanciadosstepentreelvalorinicialstaryelvalorfinalstop.Sinoseestablecesteppythonestablecerunopordefecto.linspace(start,stop,num,endpoint=True,retstep=False).Creaunarrayconvalorinicialstart,valorfinalstopynumelementos.meshgrid(x,y).Generaunamatrizdecoordenadasapartirdedoslosarraysx,y.Enelsiguienteejemplopodemosversuutilizacin,Ejemplo4.5>>>fromnumpyimport*#Importamostodoelmdulonumpy.>>>zeros((3,4))#Creamosunarraynulode3filasy4columnas.array([[0.,0.,0.,0.],[0.,0.,0.,0.],[0.,0.,0.,0.]])>>>ones(9)#Creamosunarrayunitariode1filay9columnas,array([1.,1.,1.,1.,1.,1.,1.,1.,1.])>>>empty((2,3))#Creamosunarraysinentradasde2x3.array([[3.73603959e262,6.02658058e154,6.55490914e260],[5.30498948e313,3.14673309e307,1.00000000e+000]])>>>arange(10,30,5)#Creamosunarrayconinicioen10finalen30ypasode5.array([10,15,20,25])>>>linspace(0,2,9)#Arrayde9elementosde0a2array([0.,0.25,0.5,0.75,1.,1.25,1.5,1.75,2.])>>>x=linspace(0,2*pi,100)#Paragrficasconvienetenermuchospuntos,enestecaso100puntosentre0y2*pi.>>>X,Y=np.meshgrid([1,2,3],[4,5,6,7])#Generamosunamatrizdecoordenadas.>>>Xarray([[1,2,3],[1,2,3],[1,2,3],[1,2,3]])>>>Yarray([[4,4,4],[5,5,5],[6,6,6],[7,7,7]])4.1.3.MatricesUn subtipo especial de array bidimensional de NumPy es la matriz. Una matriz es como una array, excepto que lamultiplicacindematrices(yexponenciacin)reemplazalamultiplicacinelementoaelemento.Lasmatricessecreanmediantelafuncinmatrix.Ejemplo4.6>>>fromnumpyimportmatrix#Importamosmatrixdelmdulonumpy.>>>a=matrix([[1,3,5],[3,4,2],[5,2,0]])matrix([[1,3,5],[3,4,2],[5,2,0]])>>>b=matrix([[1],[5],[3]])>>>bmatrix([[1],[5],[3]])>>>a*bmatrix([[1],[29],[5]])Definidas las matrices, podemos hacer uso de todas las funciones relacionadas con el lgebra lineal como latransposicin,ladiagonalizacinetc.Ejemplo4.7>>>b.T#Calculamoslatranspuestade*b*.matrix([[1,5,3]])>>>b.H#Calculamoslahermtica(transpuestayconjugada)de*b*.matrix([[1,5,3]])>>>c=a.I#Calculamoslainversade*b*.>>>cmatrix([[0.02439024,0.06097561,0.15853659],[0.06097561,0.15243902,0.10365854],[0.15853659,0.10365854,0.0304878]])>>>a*c#Multiplicamoslasmatrices*a*y*c*.matrix([[1.00000000e+00,5.55111512e17,6.93889390e18],[0.00000000e+00,1.00000000e+00,4.16333634e17],[0.00000000e+00,0.00000000e+00,1.00000000e+00]])Con el paquete linalg podemos calcular el determinante (det), resolver ecuaciones lineales (solve) y calcularautovaloresyautovectores.Ejemplo4.8>>>linalg.det(a)#Clculodeldeterminante.164.0>>>d=linalg.solve(a,b)#Resolucindeecuacioneslineales.>>>dmatrix([[0.14634146],[1.13414634],[0.45121951]])>>>a*dmatrix([[1.],[5.],[3.]])>>>e=linalg.eig(a)#Clculodeautovaloresyautovectores.>>>e[0]array([5.78304165,6.23396835,4.5490733])>>>e[1]matrix([[0.65072855,0.7001856,0.29375583],[0.33849942,0.61380708,0.71320335],[0.67968412,0.3646656,0.6364342]])>>>u=e[1]>>>u.T*a*umatrix([[5.78304165e+00,1.22688318e15,7.92985469e16],[1.62554432e15,6.23396835e+00,1.43223107e15],[7.68916181e16,1.83533744e15,4.54907330e+00]])Lafuncineigdevuelveunatupladondeelprimerelementoesunarraydeautovaloresyelsegundoesunamatrizquecontienealosautovectores.4.1.4.OperacionesyfuncionesEl mdulo numpy contiene todas las operaciones usuales entre arrays como las matemticas (suma, resta,multiplicacin,etc),laslgicas(and,or,xor,etc),binarias,...Lomsfcilysencilloesencasodedudaconsultarladocumentacinoficial.DeparticularintersenpticaeslatransformadadeFourier,Ejemplo4.9>>>importnumpyasnp#Importamosnumpycomoelaliasnp.>>>x=np.linspace(0,1,16)>>>y=np.sin(x)>>>printnp.fft.fft(y)array([6.82834723+0.j,0.72886897+1.98380961j,0.46469805+0.9337634j,0.42166285+0.57663662j,0.40711196+0.38478538j,0.40066563+0.25695308j,0.39747563+0.15924205j,0.39594637+0.07645992j,0.39548834+0.j,0.395946370.07645992j,0.397475630.15924205j,0.400665630.25695308j,0.407111960.38478538j,0.421662850.57663662j,0.464698050.9337634j,0.728868971.98380961j])obsrvesecomosehaformadoennmerocomplejo2j.Enpythonlosnmeroscomplejosseforman(parterealsignojparteimaginaria),esdecir,separandoparterealeimaginariaysinningnsignomultiplicativoentreelcoeficienteyelnumeroimaginarioj.Ejemplo4.10>>>numero_complejo=(1+1j)#Definoelnmerocomplejo.>>>print(numero_complejo)#Lopresentoenpantalla.(1+1j)>>>type(numero_complejo)#Comprueboeltipo.complexANTERIOR|SIGUIENTEMOSTRARELCDIGOCopyright2013,LuisMiguelSnchezBrea.CreadoconSphinx