Anda di halaman 1dari 4

ComputacincientficaconPythonparamdulosdeevaluacincontinua

enasignaturasdecienciasaplicadas
A N TER IO R |S IG U IEN T E

4.1.Numpy

TABLADECONTENIDOS
Autores

Autores:JosMaraHerreraFernndez,LuisMiguelSnchezBrea
Contenidosdeestecaptulo:

Quesnuevo
Licencia

Cargadeunarchivodedatos
Arrays
Matrices
Operacionesyfunciones
UnodelosmdulosmsimportantesdePythonesNumpy.ElorigendeNumpysedebeprincipalmentealdiseadorde
softwareJimHuguninquiendiseelmduloNumericparadotaraPythondecapacidadesdeclculosimilaresalas
deotrossoftwarescomoMATLAB.Posteriormente,mejorNumericincorporandonuevasfuncionalidadesnaciendolo
quehoyconocemoscomoNumpy.
Numpy es el encargado de aadir toda la capacidad matemtica y vectorial a Python haciendo posible operar con
cualquierdatonumricooarray(posteriormenteveremosquesunarray).Incorporaoperacionestanbsicascomola
sumaolamultiplicacinuotrasmuchomscomplejascomolatransformadadeFourieroellgebralineal.Adems
incorporaherramientasquenospermitenincorporarcdigofuentedeotroslenguajesdeprogramacincomoC/C++o
Fortranloqueincrementanotablementesucompatibilidadeimplementacin.

Descargas
Referencias
1.Introduccin
2.PuestaenMarcha
3.LenguajesdeProgramacin
4.MdulosCientficos
5.EcuacionesdeMaxwellenelvaco
6.Polarizacin
7.Interaccinradiacinmateria
8.ndicederefraccin:modelomicroscpico

Parapoderutilizarestemdulosinohemosinstaladopython(x,y)loprimeroquedebemosdehaceresdescargarnosla
ltima versin desde el sitio oficial http://www.scipy.org/Download. En caso de que nuestro sistema operativo sea
LinuxprobablementevengainstaladodentrodePython.Denoserasdebemosinstalarloporelmtodohabitual.Para
ms informacin y otros sistemas operativos consultar las notas oficiales de instalacin. Para cargar el mdulo en
Pythonypoderllamarlodeformarmscmodaesdeusoextendidolautilizacindelaliasnp,

9.EcuacionesdeFresnel

importnumpyasnp

13.Difraccinencampocercano

10.Pulsosdeluz
11.Interferencias
12.Mdulosdeptica

14.Difraccinencampolejano

4.1.1.Cargadeunarchivodedatos

15.RedesdeDifraccin
16.Procesadopticodelainformacin

En el mbito cientfico es frecuente almacenar y trasladar paquetes de datos en archivos escritos en, por ejemplo,
cdigoASCII.Pythonincorporavariasfuncionesquenospermitenlalecturayescrituraenestosarchivosfacilitando
sumanejo.Unejemplodeelloeselcomandoloadtxtquenospermitecargarlosdatoscontenidosenunarchivode
textoodat.

BSQUEDA
Ira
Introduzcalostrminosdebsquedaounnombrede

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.Arrays
Contodaprobabilidad,ellectorquehayarealizadounacercamientoacualquierlenguajedeprogramacinhabrodo
hablardearrays. Un array es el termino que traslada el concepto matemtico de vector o matriz a la programacin
aadindolelanocindealmacenamientoenmemoria.Losarraysdisponenensuinteriordeunaseriedeelementos
dispuestosenfilasy/ocolumnasdependiendodeladimensin.

mdulo,claseofuncin.

EldesarrolloylaprincipalfinalidaddelmduloNumpyeslacreacinymodificacindearraysmultidimensionales.
Paraestefinutilizaremoslasclasendarray del ingles Ndimensionalarray o usando su alias simplemente array (no
confundirconlaclasearray.arrayqueofrecemenosfuncionalidad).EnPythoncadaclasepuedeteneratributosquese
puedenllamarconelmtodovistoanteriormenteosimplementeescribiendoacontinuacindelaclaseunpuntoyel
atributo.Enlamayoradelos IDEs al cargarlaclasey escribirelpunto aparecentodoslosatributos disponibles en
ordenalfabticoporloqueencasodedudarsiemprepodemosutilizarestemtodoparaescribirelcomando.Enelcaso
dendarraylosprincipalesatributossonlossiguientes:
ndarray.ndim > Proporciona el nmero de dimensiones de nuestro array. El array identidad es un array
cuadradoconunadiagonalprincipalunitaria.
ndarray.shape>Devuelveladimensindelarray,esdecir,unatupladeenterosindicandoeltamaodelarray
encadadimensin.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#Presentamosenpantallaelarraycreado
array([0,1,2,3,4,5,6,7,8,9])
>>>type(miArray)#Comprobamosqueesunndarray
<type'numpy.ndarray'>
>>>miArray.ndim#Consultamoselnmerodedimensiones
1
>>>miArray.shape#Consultamosladimensin
(10,)
>>>miArray.size#Consultamosladimensin
10
>>>miArray.dtype#Consultamoseltipodeelementosdelarray
dtype('int64')
>>>miArray.itemsize#tamaoenbytes
8
>>>miArray.data#Consultamoselbufferdememoria.
<readwritebufferfor0x2fb57a0,size80,offset0at0x2f664b0>

Comohemosmencionandoanteriormente,losarrayssonunosdeloselementosmsutilizadosporlosprogramadores
bajocualquierlenguaje.Estegranusohacequedispongamosdeunagranvariedaddecomandosparalacreacinde
arrays: 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 diagonal
principalqueesunitaria.neselnmerodefilas(ycolumnas)quetendrlamatrizydtypeeseltipodedato.
Esteargumentoesopcional.Sinoseestablece,setomapordefectocomoflotante.
ones(shape,dtype).Creaunarraydeunoscompuestodeshapeelementos.
zeros(shape,dtype).Creaunarraydeceroscompuestodeshapeelementos.
empty(shape,dtype).Creaunarraydeceroscompuestodeshapeelementossinentradas.
eye(N,M,k,dtype).Creaunarraybidimensionalconunosenladiagonalkycerosenelresto.Essimilara
identity.Todoslosargumentossonopcionales.Neselnmerodefilas,Meldecolumnasykeselndicedela
diagonal.Cuandok=0nosreferimosaladiagonalprincipalyportantoeyeessimilaraidentity.
arange([start,]stop[,step,],dtype=None).Creaunarrayconvaloresdistanciadosstepentreelvalorinicialstar
yelvalorfinalstop.Sinoseestablecesteppythonestablecerunopordefecto.
linspace(start,stop,num,endpoint=True,retstep=False).Creaunarrayconvalorinicialstart,valorfinalstop
ynumelementos.
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)#Arrayde9elementosde0a2
array([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.
>>>X
array([[1,2,3],
[1,2,3],
[1,2,3],
[1,2,3]])
>>>Y
array([[4,4,4],
[5,5,5],
[6,6,6],
[7,7,7]])

4.1.3.Matrices
Un subtipo especial de array bidimensional de NumPy es la matriz. Una matriz es como una array, excepto que la
multiplicacindematrices(yexponenciacin)reemplazalamultiplicacinelementoaelemento.Lasmatricessecrean
mediantelafuncinmatrix.
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]])
>>>b
matrix([[1],
[5],
[3]])
>>>a*b
matrix([[1],
[29],
[5]])

Definidas las matrices, podemos hacer uso de todas las funciones relacionadas con el lgebra lineal como la
transposicin,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*.
>>>c
matrix([[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 calcular
autovaloresyautovectores.
Ejemplo4.8
>>>linalg.det(a)#Clculodeldeterminante.

164.0
>>>d=linalg.solve(a,b)#Resolucindeecuacioneslineales.
>>>d
matrix([[0.14634146],
[1.13414634],
[0.45121951]])
>>>a*d
matrix([[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*u
matrix([[5.78304165e+00,1.22688318e15,7.92985469e16],
[1.62554432e15,6.23396835e+00,1.43223107e15],
[7.68916181e16,1.83533744e15,4.54907330e+00]])

Lafuncineigdevuelveunatupladondeelprimerelementoesunarraydeautovaloresyelsegundoesunamatrizque
contienealosautovectores.

4.1.4.Operacionesyfunciones
El mdulo numpy contiene todas las operaciones usuales entre arrays como las matemticas (suma, resta,
multiplicacin,etc),laslgicas(and,or,xor,etc),binarias,...Lomsfcilysencilloesencasodedudaconsultarla
documentacinoficial.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(parterealsigno
jparteimaginaria),esdecir,separandoparterealeimaginariaysinningnsignomultiplicativoentreelcoeficienteyel
numeroimaginarioj.
Ejemplo4.10
>>>numero_complejo=(1+1j)#Definoelnmerocomplejo.
>>>print(numero_complejo)#Lopresentoenpantalla.
(1+1j)
>>>type(numero_complejo)#Comprueboeltipo.
complex

ANTERIOR|SIGUIENTE
MOSTRARELCDIGO
Copyright2013,LuisMiguelSnchezBrea.CreadoconSphinx

Anda mungkin juga menyukai