23 - Python, Listas y Arreglos

Python ING1310 – Introducci´ on a la Computaci´ on Python Listas y Arreglos Mat´ıas Recabarren - Andr´es Moreno mreca

Views 126 Downloads 0 File size 131KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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

Python

En esta clase

1 Resumen Clase Anterior 2 Listas 3 numpy

numpy.array numpy.matrix numpy.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

Creaci´on de listas • En python a lo que normalmente se conoce como arreglos los

llamaremos listas. • Conceptualmente una lista describe mejor como funcionan los arreglos

b´asicos en python. • Para crearlas se utilizan par´ entesis de corchete, y los elementos se

separan por comas. • Funcionan como tipos por referencia. Sint´axis Python: Listas a = [1 , 2 , 3 , 4]

Clase 23

6 / 25

Python Listas

Tipos en listas • Dado que el tipo de las variables es din´ amico, las listas soportan

cualquier tipo en su interior. • Incluso elementos de tipos diferentes

Ejemplo: Listas con m´ ultiples tipos a = [1 , 2.35 , ’ texto ’ , 4 , ’ palabra ’] • Por supuesto una lista puede tener otras listas en su interior Ejemplo: Listas con otras listas a = [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 funci´ on len(a) Ejemplo: ´Indices en listas a = [1 , 2 , 3 , 4 , 5] print a [1] # muestra un 2 print a [ -2] # muestra un 4

Clase 23

8 / 25

Python Listas

Sub-listas • Las listas permiten obtener f´ acilmente un pedazo de ellas. • Este pedazo es una copia de los elementos indicados. • Se da la posici´ on 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-listas a = [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

Modificaci´on • Las listas son modificables: • se pueden cambiar elementos, • agregar elementos, • eliminar elementos. Ejemplo: Modificar listas a = [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 autom´ aticamente son objetos • y tienen m´ etodos. • Algunos de esos m´ etodos: • 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 posici´ on indicada • a[i:i] = [x] • remove(x) → elimina la primera aparici´ on del elemento en la lista • index(x) → retorna el ´ındice de la primera aparici´ on 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 rev´ es Clase 23

11 / 25

Python numpy

numpy

Clase 23

12 / 25

Python numpy

¿Qu´e es numpy?

NUMeric PYthon • numpy es un m´ odulo cuyo prop´ osito es proveer funcionalidades para la computaci´on 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 b´ asico de Numpy, un arreglo n-dimensional de floats (puede

ser complejo) • Se deben crear expl´ıcitamente a trav´ es de la funci´on array • Recibe como par´ ametro una lista

• Se indexan y acceden igual que las listas b´ asicas de python • Soporta sub-listas y los mismos m´ etodos Ejemplo: Creaci´ on de array from numpy import * a = array ([10 , 20 , 30 , 40]) # arreglo 1 - D a = array ([[1 , 2] , [3 , 4]]) # arreglo 2 - D

Clase 23

15 / 25

Python numpy numpy.array

Otras formas de crear arreglos Ejemplo: Creaci´ on de array (m´as) 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) ) ceros d = ones ((3 ,3) ) unos e = d . copy () e . fill (7)

# arreglo 2 - d de 3 x3 lleno de # arreglo 2 - d de 3 x3 lleno de

# copia de d # llenar e con 7 s

f = linspace (1 ,10 ,8) # 8 eltos equidistantes en el rango 1 ,10 Clase 23

16 / 25

Operaciones aritm´eticas • Es posible aplicar operaciones aritm´ eticas a los array de numpy • array +-*/ array → suma/resta/multiplica/divide elemento con elemento • array +-*/ n´ umero → suma/resta/multiplica/divide cada elemento del array con el n´ umero • array ** n´ umero → eleva cada elemento del array al n´ umero • Tambi´ en soporta comparaciones Ejemplo: Operaciones aritm´ eticas con numpy.array from numpy import * a = arange (1 , 11 , 2) b = linspace ( -3 , 10 , 5) print a print b print a + b print a - 2 print a * b print b /2 print a **2

Python numpy numpy.array

Operaciones matem´aticas • Se pueden aplicar funciones matem´ aticas sobre cada componente del

arreglo Ejemplo: Operaciones matem´ aticas con numpy.array from numpy import * t = linspace (0 ,10 ,30) y1 = exp ( t ) # exp . de cada elemento de t y2 = sin ( t ) # seno de cada elemento de t y3 = log10 ( t ) # log base 10 y4 = log ( t ) # log base e y5 = sqrt ( t ) # raiz cuadrada # Tambien se pueden combinar y6 = 10.* exp ( t ) + 4.* sin ( t ) - log10 ( t ) / (1 + t **3) Clase 23

18 / 25

Python numpy numpy.array

M´etodos • numpy.array define una serie de m´ etodos adicionales a las listas

comunes. • 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 dimensi´ on. • 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 n´ umerico quiere decir distinto de 0) • any() → retorna True si alguno de los elementos es verdadero Clase 23

19 / 25

Python numpy numpy.array

M´etodos • M´ as m´etodos: • argmax/argmin([axis]) → retorna el ´ındice del mayor/menor elemento del array • Puede recibir como par´ ametro la dimensi´ on en la cual buscar • En el caso anterior retorna un array con el m´ aximo/m´ınimo en cada posici´ on • 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 dimensi´ on, retorna la suma en esa dimensi´ on • cumsum([axis]) → retorna un array con las sumas acumuladas para • • • • • Clase 23

cada posici´ on mean([axis]) → retorna el promedio de los elementos var([axis]) → retorna la varianza de los elementos std([axis]) → retorna la desviaci´ on est´andar de los elementos prod([axis]) → retorn el producto de los elementos cumprod([axis]) → retorna un array con el producto acumulado 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 interpretaci´ on matricial • Operaciones se realizan en el sentido matricial • Divisi´ on de matrices no est´a 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: Matrices from 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*e print c print 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 • Soluci´ on de sistemas lineales A × x = b Ejemplo: Ecuaciones Lineales from 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