23 - python, listas y arreglos

25
Python ING1310 – Introducci´on a la Computaci´on Python Listas y Arreglos Mat´ ıas Recabarren - Andr´ es Moreno [email protected] - [email protected] Universidad de Los Andes 20/octubre/2010 Rev : 103 Clase 23 1 / 25

Upload: diana-magana

Post on 31-Jul-2015

276 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 23 - Python, Listas y Arreglos

Python

ING1310 – Introduccion a la Computacion

PythonListas y Arreglos

Matıas Recabarren - Andres [email protected] - [email protected]

Universidad de Los Andes

20/octubre/2010

Rev : 103

Clase 23 1 / 25

Page 2: 23 - Python, Listas y Arreglos

Python

En esta clase

1 Resumen Clase Anterior

2 Listas

3 numpynumpy.arraynumpy.matrixnumpy.linalg

Clase 23 2 / 25

Page 3: 23 - Python, Listas y Arreglos

Python

Resumen Clase Anterior

Resumen Clase Anterior

Clase 23 3 / 25

Page 4: 23 - Python, Listas y Arreglos

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

Page 5: 23 - Python, Listas y Arreglos

Python

Listas

Listas

Clase 23 5 / 25

Page 6: 23 - Python, Listas y Arreglos

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

Page 7: 23 - Python, Listas y Arreglos

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

Page 8: 23 - Python, Listas y Arreglos

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

Page 9: 23 - Python, Listas y Arreglos

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

Page 10: 23 - Python, Listas y Arreglos

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

Page 11: 23 - Python, Listas y Arreglos

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

Page 12: 23 - Python, Listas y Arreglos

Python

numpy

numpy

Clase 23 12 / 25

Page 13: 23 - Python, Listas y Arreglos

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

Page 14: 23 - Python, Listas y Arreglos

Python

numpy

numpy.array

numpy

numpy.array

Clase 23 14 / 25

Page 15: 23 - Python, Listas y Arreglos

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

Page 16: 23 - Python, Listas y Arreglos

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

Page 17: 23 - Python, Listas y Arreglos

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

Page 18: 23 - Python, Listas y Arreglos

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

Page 19: 23 - Python, Listas y Arreglos

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

Page 20: 23 - Python, Listas y Arreglos

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

Page 21: 23 - Python, Listas y Arreglos

Python

numpy

numpy.matrix

numpy

numpy.matrix

Clase 23 21 / 25

Page 22: 23 - Python, Listas y Arreglos

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

Page 23: 23 - Python, Listas y Arreglos

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

Page 24: 23 - Python, Listas y Arreglos

Python

numpy

numpy.linalg

numpy

numpy.linalg

Clase 23 24 / 25

Page 25: 23 - Python, Listas y Arreglos

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