Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

02-Diplomatura en IA - Estructura de Datos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 40

Diplomatura en Inteligencia Artificial

Estructura de datos

Profesores
Mg. Hernán Valdés
Lic. Germán Berterreix
Ing. Mayra Morale
Contenido de la 1 Estructuras de datos
clase Introducción

2 Listas, tuplas
Creación de listas
Conversión list()
Operaciones
Tuplas definición
Empaquetado y desempaquetado de Tuplas

3 Diccionarios
Creación de diccionario
Operaciones
Conversión dict()
Metodos

4 Vectores y matrices
Definición
Creación de vectores y matrices
Módulo numpy
Operaciones

5 Ejercicios y aplicaciones
Ejercicios descriptivos de la unidad.
Ejercicios integradores.
Estructura de datos
Introducción

Son tipos de datos compuestos que permiten organizar


múltiples tipos de datos básicos como enteros, flotantes,
cadenas de texto y booleanos.

Tipos de estructuras en Python

• Listas: Colección ordenada de elementos, accesibles


mediante índices. Son mutables, es decir, sus
elementos pueden ser modificados.
• Diccionarios: Colección de pares clave-valor donde los
elementos son accesibles a través de claves, no
índices. Útil para almacenar datos no ordenados.
• Tuplas: Similar a las listas, pero inmutables. Una vez
creada, no puede ser modificada.
Introducción

Tipos de estructuras en Python

• Conjuntos: Colección desordenada de elementos


únicos, es decir, no se permiten duplicados.
• Vectores y Matrices: Estructuras de datos más
complejas que permiten almacenar colecciones de
elementos numéricos, organizados en una o más
dimensiones.
• Reglas útiles: El manejo correcto de estas estructuras
es fundamental para optimizar el rendimiento de los
programas y facilitar el manejo de grandes volúmenes
de datos
Manipulación de Listas en Python:
Las listas son una estructura de datos fundamental
en Python, y esta diapositiva muestra ejemplos
comunes de manipulación, como contar
elementos, encontrar el índice de un valor, añadir,
eliminar, ordenar y realizar otras operaciones sobre
listas.

Operaciones Clave: Algunas de las operaciones


más destacadas son
• count(), index()
• reverse()
• append()
• sort()
• pop(),

Todas esenciales para la gestión y manipulación de


datos dentro de listas en Python.
Listas, tuplas
Creación de listas en Python:
Las listas son estructuras de datos mutables que
permiten almacenar objetos con un orden definido.

Pueden contener elementos duplicados y su tamaño


puede cambiar, ya que podemos agregar, eliminar o
modificar sus elementos.

En Python, las listas se definen utilizando corchetes [ ] y


sus elementos se separan por comas.

Las listas pueden contener cualquier tipo de dato:


enteros, cadenas, booleanos, e incluso otras listas o
diccionarios.
Operaciones con Listas - Conversión y Uso de list()
Puntos importantes:

• Las listas en Python son estructuras


que pueden contener tipos de datos
heterogéneos.

• Utilizamos la función list() para


convertir tipos de datos a listas.

• Si no se pasa ningún argumento a list(),


se genera una lista vacía.

• Podemos generar listas vacías con [] o


mediante list(), siendo este último más
eficiente en términos de rendimiento.
Operaciones con Listas - Obtener un elemento
• Las listas permiten acceder a
elementos individuales especificando
su posición entre corchetes.

• El acceso a los elementos se puede


realizar desde el inicio o el final,
utilizando índices positivos o
negativos.

• Los índices negativos comienzan


desde el último elemento de la lista
hacia el primero.
Operaciones con Listas - Recortar Lista

• La operación de recorte de listas


en Python permite seleccionar una
parte de la lista original utilizando
los índices de inicio y fin.

• En el recorte, el índice de inicio es


incluido, pero el índice de fin no se
incluye en el resultado.

• Puedes omitir el índice inicial o


final para indicar el comienzo o el
final de la lista.
Operaciones con Listas - Invertir
Con la función reversed() podemos invertir Ejemplo 1: Usando reversed()

el orden de los elementos dentro de una


lista sin modificar la lista original, ya que
devuelve un iterador que recorre la lista en
orden inverso.

Otra forma de invertir los valores es


utilizando "steps negativos" en el slicing,
lo que permite recorrer la lista en sentido
inverso sin necesidad de utilizar reversed(). Ejemplo 2: Usando steps
negativos
Es importante destacar que, si se desea
modificar la lista original, se debe asignar
el resultado a una nueva variable o a la
misma lista.
Operaciones con Listas - Agregar en cualquier posición
Para insertar elementos en una lista en una posición específica, utilizamos la
función insert(). Esta función nos permite agregar valores sin reemplazar
ningún elemento existente. Solo necesitamos definir dos parámetros: la
posición en la que queremos insertar el valor y el valor a agregar.

Ejemplo:

Si el índice especificado es mayor que la longitud de la lista, Python agregará


el valor al final sin generar error.
Operaciones con Listas - Combinación y Repetición
de Elementos
Las listas en Python permiten combinar elementos de diferentes listas entre sí
utilizando el operador de suma (+). Esto crea una nueva lista que contiene todos los
elementos de las listas originales.
También es posible extender el número de elementos repitiéndolos varias veces
usando el operador de multiplicación (*).

Ejemplo:
Definición de Tuplas
• Las tuplas son otro tipo de estructura de datos en Python, muy similar a
las listas, pero con la diferencia clave de que son inmutables. Esto
significa que, una vez creadas, no se pueden modificar.
• Las tuplas se definen separando los valores por comas, y no requieren
corchetes como las listas.
• Pueden contener diferentes tipos de datos dentro de la misma tupla, lo
que las hace flexibles.
Ejemplo:
Tuplas y Secuencias:

•Las tuplas forman parte de los tipos de datos secuenciales en Python.


•Soportan operaciones de anidamiento, permitiendo crear tuplas dentro de otras
tuplas.
•Las tuplas no se pueden modificar (inmutabilidad), lo que las hace seguras y
confiables para preservar datos.
•Útiles en aplicaciones de IA donde la integridad de los datos es crucial.
Ejemplo:
Tuplas con Listas como Elementos
• Las tuplas pueden contener objetos mutables, como listas, dentro de sus elementos.

• Las tuplas son inmutables, pero las listas que están dentro de ellas pueden ser
modificadas.

• El uso de paréntesis no es obligatorio, pero facilita la comprensión de los límites y


alcance de la tupla.

• Esta estructura es útil en aplicaciones donde se necesita combinar la estabilidad de


las tuplas con la flexibilidad de las listas, como ocurre en el procesamiento de datos
en proyectos de IA.
Tuplas Vacías y Singleton:
• Las tuplas son inmutables y pueden contener una secuencia heterogénea de
elementos.

• Las tuplas vacías se definen con un par de paréntesis vacío: ().

• Para crear una tupla con un solo elemento (singleton), es necesario agregar una coma
después del valor.

• Estas estructuras son útiles en muchos casos dentro del mundo de la IA, donde es
importante manejar datos inmutables para garantizar la consistencia en modelos
complejos.
Empaquetado y Desempaquetado de Tuplas
• Las tuplas permiten empaquetar múltiples valores en una sola estructura.

• Mediante el proceso de desempaquetado, podemos asignar los valores de una tupla a


variables individuales.

• Este mecanismo es útil cuando necesitamos trabajar con varios elementos a la vez,
pero queremos referirnos a ellos individualmente.
Diccionarios
Diccionarios en Python

• Los diccionarios son estructuras de datos que


almacenan pares clave-valor, conocidos en otros
lenguajes como "memorias asociativas" o "arreglos
asociativos".

• Son útiles para cuando necesitamos acceder a valores


de manera rápida, mediante una clave específica, en
lugar de usar índices numéricos como en las listas.

• Los diccionarios no tienen un orden garantizado en


sus elementos, y las claves deben ser de tipos
inmutables (cadenas, números, tuplas inmutables).

• Se crean usando llaves {} y se inicializan con pares


clave-valor.
Creación de un Diccionario en Python
• Los diccionarios se conocen como «memorias
asociativas» o «arreglos asociativos» en otros
lenguajes.

• Funcionan como conjuntos no ordenados de


pares clave-valor, donde las claves deben ser
de tipo inmutable (como cadenas o números).

• Los diccionarios en Python se crean utilizando


llaves {}, y se pueden inicializar con pares
clave-valor al colocar esos pares entre las
llaves.

• Permiten realizar operaciones como agregar,


actualizar o eliminar valores basados en sus
claves.
Creación de un diccionario
Operaciones sobre Diccionarios en Python

• Python permite realizar varias operaciones


con diccionarios de manera eficiente.

• Las operaciones más comunes incluyen


agregar, eliminar, editar claves y valores,
además de generar copias y obtener la
longitud del diccionario.

• Estas funcionalidades permiten que los


diccionarios sean flexibles y altamente
útiles para gestionar datos.
Conversión a Diccionario con dict():
• Python permite convertir otros tipos de
datos como listas o tuplas en diccionarios
utilizando la función dict().

• Los datos a convertir deben estar


estructurados de forma que cada elemento
contenga un par clave-valor.

• Es útil para transformar datos existentes en


estructuras clave-valor de manera
eficiente.
Creación de diccionario con dict()
•Concepto: Los diccionarios se
pueden crear utilizando la función
dict().
•Atributos y valores: Los atributos
representan las claves y los valores
asociados a cada clave dentro del
diccionario.
•Transformación de estructuras: Es
posible transformar tablas o listas de
pares clave-valor en un diccionario.
Métodos del diccionario

Los métodos en los diccionarios son funciones


predefinidas que operan sobre los datos de estos.

• Sintaxis de los métodos: A diferencia de las


funciones, los métodos se escriben como
diccionario.metodo(), donde diccionario es el
nombre del diccionario sobre el cual se aplica el
método.

• Método keys(): Devuelve una lista con todas las


claves del diccionario.

• Autocompletado: En los entornos interactivos,


como Jupyter o un editor de código, podemos
usar TAB para autocompletar los métodos
disponibles para un diccionario.
Método fromkeys()

Permite crear un diccionario a partir de una


secuencia de claves, asignando un valor
común a todas ellas.

• Parámetros: La función toma dos


argumentos: la secuencia de claves y el
valor de relleno que se asignará a todas las
claves.

• Método get(): Permite acceder al valor de


una clave de forma segura, evitando
errores si la clave no existe en el
diccionario.
Vectores y matrices
Módulo Numpy:
•Biblioteca fundamental en Python para el cálculo numérico y
científico.

• Vectores o Arrays: Similares a las listas, pero optimizados para


operaciones matemáticas. Los arrays de Numpy permiten
realizar operaciones como sumas, productos punto, entre
otras.

• Importar Numpy: Para usar el módulo, es necesario importarlo.

• Operación matemática: El método np.dot() es utilizado para


realizar el producto punto entre dos arrays.
Módulo Numpy

Biblioteca especializada para cálculos


numéricos en Python, ampliamente utilizada
en inteligencia artificial y ciencia de datos.

Función help(np): Nos muestra toda la


documentación y funcionalidades disponibles
del módulo Numpy, incluyendo funciones,
parámetros y retornos.

Referencias útiles: Link con información


adicional sobre el uso de Numpy y la creación
de vectores y matrices

https://aprendeconalf.es/docencia/python/
manual/numpy/
Creación de vectores y
matrices - Módulo Numpy
Creación de Vectores: Los vectores son arreglos
unidimensionales, creados con numpy.array().

Creación de Matrices: Las matrices son arreglos


bidimensionales, creadas también con numpy.array()
utilizando listas de listas
.
Funciones clave en Numpy:

• np.zeros(): Crea un vector o matriz de ceros.


• np.ones(): Crea un vector o matriz de unos.
• np.dot(): Realiza el producto punto entre dos
vectores o matrices.

Importar Numpy: Para usar el módulo numpy en


Python, primero debemos importarlo con import
numpy as np.
Arrays de 1, 2 y 3 dimensiones
• 1D Array epresenta una lista de valores.

• 2D Array (Matriz): Representa una lista de


listas, donde cada lista es una fila de la
matriz.

• 3D Array: Representa una lista de listas de


listas, donde cada nivel de anidación
añade una nueva dimensión al arreglo.
Operaciones - Producto Escalar y Módulo

:
• Producto Escalar: Se obtiene
utilizando np.dot() entre dos vectores.

• Producto Matricial: Utiliza la misma


función, pero aplicada a matrices de
dimensiones compatibles.

• Módulo de un vector/matriz: Se
puede obtener con np.linalg.norm().
Operaciones avanzadas - Producto Escalar y Módulo
:
•Producto escalar: Se obtiene con
np.dot() entre dos vectores de igual
longitud.
•Producto matricial: Aplica la misma
función np.dot(), pero las matrices
deben tener dimensiones
compatibles.
•Cálculo de Módulo: El módulo de un
vector o una matriz se puede calcular
con np.linalg.norm().

El producto escalar de los vectores [1,3,5] y [4,2,6] se calcula


multiplicando cada par de elementos correspondientes y sumando los
resultados:
1×4+3×2+5×6=4+6+30=401
Operaciones avanzadas - Producto Matricial

• Dimensiones de las matrices: matriz_1 es de


dimensión 2x3 (2 filas, 3 columnas) y matriz_2
es de 3x2 (3 filas, 2 columnas), lo que permite
realizar el producto.

• El producto matricial de las matrices A y B se


calcula multiplicando las filas de la primera
matriz por las columnas de la segunda:

• El resultado será una matriz 2x2.


Operaciones avanzadas -
Cálculo de Módulo de un Vector Cálculo de Módulo de una Matriz
Explicación: El módulo de la matriz se
calcula tomando la raíz
•El módulo o norma de un vector
cuadrada de la suma de los cuadrados
[3,4] se calcula con la fórmula: de todos los elementos de la matriz:
Operaciones avanzadas
Producto Matricial y Escalar en un Contexto de IA
El producto matricial es una operación clave en las redes neuronales. Cuando tienes
una capa de neuronas, los pesos de las conexiones y las entradas a esa capa se
representan como matrices, y el producto matricial es fundamental para calcular las
salidas de la capa.

• En este ejemplo, los pesos de las


conexiones entre la capa de entrada y
una capa oculta de una red neuronal
son la matriz y las entradas a

esa capa son el vector [1,0.5].

• El producto escalar entre la matriz de


pesos y el vector de entrada calcula la
salida de la capa, que es [0.6,0.55]
Operaciones avanzadas
Matriz Transpuesta

La matriz transpuesta es una operación


fundamental en álgebra lineal y es
ampliamente utilizada en Inteligencia Artificial,
particularmente en redes neuronales y cálculos
matemáticos.

Invirtiendo las filas y columnas de una matriz


obtenemos su transpuesta.
Gracias!

También podría gustarte