Post on 31-Jul-2015
Python
ING1310 – Introduccion a la Computacion
PythonListas y Arreglos
Matıas Recabarren - Andres Morenomrecabarren@uandes.cl - andres@moreno.cl
Universidad de Los Andes
20/octubre/2010
Rev : 103
Clase 23 1 / 25
Python
En esta clase
1 Resumen Clase Anterior
2 Listas
3 numpynumpy.arraynumpy.matrixnumpy.linalg
Clase 23 2 / 25
Python
Resumen Clase Anterior
Resumen Clase Anterior
Clase 23 3 / 25
Python
Resumen Clase Anterior
Resumen Clase 22
• Python es un lenguaje interpretado y multiparadigma• Puede tener clases, funciones, variables globales, . . .• No tiene main explıcito
• Las variables no necesitan ser declaradas, simplemente se usan• No tienen un tipo fijo, este depende del contenido
• La forma de pensar no cambia.
Clase 23 4 / 25
Python
Listas
Listas
Clase 23 5 / 25
Python
Listas
Creacion de listas
• En python a lo que normalmente se conoce como arreglos losllamaremos listas.
• Conceptualmente una lista describe mejor como funcionan los arreglosbasicos en python.
• Para crearlas se utilizan parentesis de corchete, y los elementos seseparan por comas.
• Funcionan como tipos por referencia.
Sintaxis Python: Listas
a = [1, 2, 3, 4]
Clase 23 6 / 25
Python
Listas
Tipos en listas
• Dado que el tipo de las variables es dinamico, las listas soportancualquier tipo en su interior.
• Incluso elementos de tipos diferentes
Ejemplo: Listas con multiples tipos
a = [1, 2.35, ’texto ’, 4, ’palabra ’]
• Por supuesto una lista puede tener otras listas en su interior
Ejemplo: Listas con otras listasa = [1, 2.35, ’texto ’, [1, 2, 3], ’palabra ’]
Clase 23 7 / 25
Python
Listas
Indices
• Los ındices comienzan desde 0
• Se pueden usar ındices negativos• Parten desde el final• El ındice -i equivale a len(a)-i
• El largo de la lista se obtiene con la funcion len(a)
Ejemplo: Indices en listasa = [1, 2, 3, 4, 5]print a[1] # muestra un 2print a[-2] # muestra un 4
Clase 23 8 / 25
Python
Listas
Sub-listas
• Las listas permiten obtener facilmente un pedazo de ellas.• Este pedazo es una copia de los elementos indicados.
• Se da la posicion de inicio y la de final (no la incluye) separadas por :• Si no se indica la de inicio se asume que es la 0• Si no se indica la de final se asume que es len(a)
Ejemplo: Sub-listasa = [1, 2, 3, 4, 5]b = a[2:] # [3, 4, 5]c = a[1:-1] # [2, 3, 4]d = a[:2] # [1, 2]e = a[:] # crear una copia de a
Clase 23 9 / 25
Python
Listas
Modificacion
• Las listas son modificables:• se pueden cambiar elementos,• agregar elementos,• eliminar elementos.
Ejemplo: Modificar listasa = [1, 2, 3, 4, 5]a[0:2] = [6, 7] # a = [6, 7, 3, 4, 5]a[0:2] = [] # a = [3, 4, 5]a[1:1] = [10, ’hola’] # a = [3, 10, ’hola ’, 4, 5]a[:] = [] # vaciar a
Clase 23 10 / 25
Python
Listas
Listas como objetos
• Las listas automaticamente son objetos• y tienen metodos.
• Algunos de esos metodos:• append(x) → agrega un elemento al final de la lista
• a[len(a):] = [x]
• extend(L) → agrega la lista recibida al final de la lista• a[len(a):] = L
• insert(i,x) → inserta el elemento en la posicion indicada• a[i:i] = [x]
• remove(x) → elimina la primera aparicion del elemento en la lista• index(x) → retorna el ındice de la primera aparicion del elemento en
la lista• count(x) → retorna la cantidad de apariciones del elemento en la lista• sort() → ordena la lista• reverse() → pone los elementos de la lista al reves
Clase 23 11 / 25
Python
numpy
numpy
Clase 23 12 / 25
Python
numpy
¿Que es numpy?
NUMeric PYthon
• numpy es un modulo cuyo proposito es proveer funcionalidades para lacomputacion cientıtifica:
• array n-dimensional con muchas funcionalidades,• manejo especial para matrices,• funciones para algebra lineal, transformada de Fourier, . . .
• Para utilizarlo simplemente hay que importarlo• from numpy import *
Clase 23 13 / 25
Python
numpy
numpy.array
numpy
numpy.array
Clase 23 14 / 25
Python
numpy
numpy.array
array en numpy
• Es el tipo basico de Numpy, un arreglo n-dimensional de floats (puedeser complejo)
• Se deben crear explıcitamente a traves de la funcion array• Recibe como parametro una lista
• Se indexan y acceden igual que las listas basicas de python• Soporta sub-listas y los mismos metodos
Ejemplo: Creacion de array
from numpy import *
a = array ([10, 20, 30, 40]) # arreglo 1-Da = array ([[1, 2], [3, 4]]) # arreglo 2-D
Clase 23 15 / 25
Python
numpy
numpy.array
Otras formas de crear arreglos
Ejemplo: Creacion de array (mas)
from numpy import *
a = arange (0 ,10) # array(range (0 ,10))b = arange (0 ,10 ,0.5) # array ([0. ,0.5 ,1. ,... ,9.5])
c = zeros ((3,3)) # arreglo 2-d de 3x3 lleno deceros
d = ones ((3,3)) # arreglo 2-d de 3x3 lleno deunos
e = d.copy() # copia de de.fill (7) # llenar e con 7s
f = linspace (1,10,8) # 8 eltos equidistantes en elrango 1,10
Clase 23 16 / 25
Operaciones aritmeticas• Es posible aplicar operaciones aritmeticas a los array de numpy
• array +-*/ array → suma/resta/multiplica/divide elemento conelemento
• array +-*/ numero → suma/resta/multiplica/divide cada elementodel array con el numero
• array ** numero → eleva cada elemento del array al numero
• Tambien soporta comparaciones
Ejemplo: Operaciones aritmeticas con numpy.array
from numpy import *
a = arange(1, 11, 2)b = linspace(-3, 10, 5)print aprint bprint a + bprint a - 2print a*bprint b/2print a**2
Python
numpy
numpy.array
Operaciones matematicas
• Se pueden aplicar funciones matematicas sobre cada componente delarreglo
Ejemplo: Operaciones matematicas con numpy.array
from numpy import *
t = linspace (0 ,10 ,30)y1 = exp(t) # exp. de cada elemento de ty2 = sin(t) # seno de cada elemento de ty3 = log10(t) # log base 10y4 = log(t) # log base ey5 = sqrt(t) # raiz cuadrada
#Tambien se pueden combinary6 = 10.* exp(t) + 4.* sin(t) - log10(t) / (1 + t**3)
Clase 23 18 / 25
Python
numpy
numpy.array
Metodos
• numpy.array define una serie de metodos adicionales a las listascomunes.
• Algunos de ellos:• fill(x) → todos los elementos del array toman el valor x• copy() → retorna una copia del array• resize(shape) → cambia las dimensiones del array, recibiendo una
tupla con el valor para cada dimension.• El array no puede estar siendo referenciado por otra variable
• transpose() → retorna el array con los ejes transpuestos• En array de 1-D no provoca efectos.
• flatten() → retorna una copia del array en 1-D• all() → retorna True si todos los elementos son verdaderos (en el
caso numerico quiere decir distinto de 0)• any() → retorna True si alguno de los elementos es verdadero
Clase 23 19 / 25
Python
numpy
numpy.array
Metodos
• Mas metodos:• argmax/argmin([axis]) → retorna el ındice del mayor/menor
elemento del array• Puede recibir como parametro la dimension en la cual buscar• En el caso anterior retorna un array con el maximo/mınimo en cada
posicion
• min/max([axis]) → retorna el mayor/menor elemento en el array• sum([axis]) → retorna la suma de los elementos del array
• Si se le indica una dimension, retorna la suma en esa dimension
• cumsum([axis]) → retorna un array con las sumas acumuladas paracada posicion
• mean([axis]) → retorna el promedio de los elementos• var([axis]) → retorna la varianza de los elementos• std([axis]) → retorna la desviacion estandar de los elementos• prod([axis]) → retorn el producto de los elementos• cumprod([axis]) → retorna un array con el producto acumulado
Clase 23 20 / 25
Python
numpy
numpy.matrix
numpy
numpy.matrix
Clase 23 21 / 25
Python
numpy
numpy.matrix
numpy.matrix
• Implementa el caso especial de arreglo 2D con interpretacion matricial
• Operaciones se realizan en el sentido matricial• Division de matrices no esta definida
• Si A es matriz, su inversa es A.I y su transpuesta A.T
• Se pueden combinar en operaciones con array (devuelve array)
Ejemplo: Matricesfrom numpy import *
a = matrix ([[1 ,2] ,[5 , -7]])b = matrix ([[3 ,2] ,[1 ,8]])
c = a*b
Clase 23 22 / 25
Python
numpy
numpy.matrix
Comparacion
Ejemplo: Matrix vs. Array
from numpy import *
a = matrix ([[1 ,2] ,[5 , -7]])b = matrix ([[3 ,2] ,[1 ,8]])
c = a*b
d = array ([[1 ,2] ,[5 , -7]])e = array ([[3 ,2] ,[1 ,8]])
f = d*eprint cprint f
Clase 23 23 / 25
Python
numpy
numpy.linalg
numpy
numpy.linalg
Clase 23 24 / 25
Python
numpy
numpy.linalg
numpy.linalg
• Provee funciones para hacer algebra lineal
• Solucion de sistemas lineales A× x = b
Ejemplo: Ecuaciones Linealesfrom numpy import *from numpy import linalg
A = array ([[1,2,3],[5,-7,3],[4,7,8]])b = array ([[1] ,[ -5] ,[2]])x = linalg.solve(A,b)
print x
Clase 23 25 / 25