0% encontró este documento útil (0 votos)
33 vistas15 páginas

Compendio Unidad 3

Este documento trata sobre arreglos multidimensionales y el uso de la biblioteca NumPy en Python. Explica conceptos como vectores, matrices y cubos de datos, y métodos de ordenamiento aplicados a vectores. También describe las ventajas y usos comunes de NumPy en el procesamiento de grandes cantidades de datos.

Cargado por

el baron H
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
33 vistas15 páginas

Compendio Unidad 3

Este documento trata sobre arreglos multidimensionales y el uso de la biblioteca NumPy en Python. Explica conceptos como vectores, matrices y cubos de datos, y métodos de ordenamiento aplicados a vectores. También describe las ventajas y usos comunes de NumPy en el procesamiento de grandes cantidades de datos.

Cargado por

el baron H
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 15

Portada

TECNOLOGÍAS DE LA INFORMACIÓN

FUNDAMENTOS DE PROGRAMACION

Profesor Autor:
José Parraga Valle, Mg.
Duglas Antonio Mendoza Briones, Mg.
Titulaciones Semestre

● Ingeniero en Tecnologías de la Información PRIMERO

PERÍODO OCTUBRE 2022/ FEBRERO 2023

Resultado de aprendizaje de la asignatura

En los temas correspondientes a la unidad 3 de la asignatura el objetivo es que los estudiantes


puedan entender, comprender y emplear las estructuras de arreglos como objetos para
manipular información de un mismo tipo, conocer las técnicas de búsqueda y ordenamiento de
datos.
Índice

Tabla de contenido
Unidad 3 Arreglos N-Dimensionales ................................................................................................................................... 2
1. Administración y gestión de arreglos .................................................................................................... 2
2. Propiedades ................................................................................................................................................ 3
3. Numpy. ........................................................................................................................................................ 3
3.1 ¿Por qué NumPy es rápido? ....................................................................................................................... 4
3.2 ¿Cómo importar NumPy?.......................................................................................................................... 4
3.3 ¿Quién más usa NumPy? .......................................................................................................................... 5
3.4 ¿Cuál es la diferencia entre una lista de Python y una matriz NumPy? .......................................... 6
3.5 ¿Por qué usar NumPy? .............................................................................................................................. 6
3.6 ¿Qué es una matriz? .................................................................................................................................. 6
4. Métodos de ordenamiento aplicados a vectores ................................................................................. 9
4.1 Algoritmo de ordenamiento aplicando el método burbuja ................................................................. 9
4.2 Algoritmo de ordenamiento aplicando el método de selección ....................................................... 10
4.3 Algoritmo de ordenamiento aplicando el método por inserción .................................................... 12
5. Resumen ................................................................................................................................................... 12

1
Unidad 3 Arreglos N-Dimensionales

Resultado de aprendizaje de la unidad: Aplicar técnicas de indexación y slicing para la


manipulación de datos representados como arreglos N-Dimensionales.

1. Administración y gestión de arreglos

Las variables son recursos de memoria que permiten contener un y solo un valor o dato
para gestionar los procesos requeridos, cuando se presenta la necesidad de utilizar un
grupos de valores o un grupo de datos identificados de forma individual, el uso de estas
variables independientes no es recomendable, ya que se tendría que declarar cuantas
variables sean necesarias, al ser así, la gestión y la administración se torna complicada
considerando que cada valor tiene su propio nombre y la redacción de las instrucciones se
tornarían extensas al cumplir su propósito, esta unidad ofrece la posibilidad de utilizar
variables organizadas en una sola estructura, que comparte un mismo nombre pero se
individualizan mediante el uso de índices numéricos únicos, las variables organizadas en
forma de arreglos permiten avanzar en el desarrollo de programas más complejos, permite
organizar grandes cantidades de datos y ofrecen la posibilidad de aplicar métodos de
ordenamiento, permite clasificarlos y gestionarlos de forma más simple en comparación a
las variables.

El estudio de esta unidad permitirá a los estudiantes comprender la gestión de grandes


cantidades de datos, explica y ejemplifica la gestión de cadenas de caracteres, arreglos
unidimensionales como los vectores, arreglos multidimensionales como matrices y cubos
de datos, fundamenta la organización interna de la memoria al administrar grandes
cantidades de datos.

2
2. Propiedades

Un arreglo es un grupo de espacios de memoria (grupos de variables) que se organiza por


ubicaciones con la finalidad de almacenar información del mismo tipo de dato y con el
mismo propósito. Cada posición referencia a una celda de almacenamiento que a partir de
ahora se denominará elemento del arreglo, por ejemplo, el vector es un array
unidimensional, esto significa que utilizará un índice o valor que referencia la posición de
una celda de almacenamiento; una matriz es un array bidimensional, esto quiere decir que
utilizará dos índices o valores para referenciar la posición de una celda de
almacenamiento. [1]

3. Numpy.

NumPy es el paquete fundamental para la computación científica en Python. Es una


biblioteca de Python que proporciona un objeto de matriz multidimensional, varios
objetos derivados (como matrices y matrices enmascaradas) y una variedad de rutinas
para operaciones rápidas en matrices, que incluyen manipulación matemática, lógica,
de formas, clasificación, transformadas discretas de Fourier, álgebra lineal básica,
operaciones estadísticas básicas, simulación aleatoria y mucho más.

En el núcleo del paquete NumPy, se encuentra el objeto ndarray. Esto encapsula


matrices n-dimensionales de tipos de datos homogéneos, con muchas operaciones que
se realizan en código compilado para el rendimiento. Hay varias diferencias importantes
entre las matrices NumPy y las secuencias estándar de Python:

Las matrices NumPy tienen un tamaño fijo en el momento de la creación, a diferencia de


las listas de Python (que pueden crecer dinámicamente). Cambiar el tamaño de un
ndarray creará una nueva matriz y eliminará la original.

Todos los elementos de una matriz NumPy deben ser del mismo tipo de datos y, por lo
tanto, tendrán el mismo tamaño en la memoria. La excepción: uno puede tener matrices
de objetos (Python, incluido NumPy), lo que permite matrices de elementos de diferentes
tamaños.

Las matrices NumPy facilitan operaciones matemáticas avanzadas y de otro tipo en


grandes cantidades de datos. Por lo general, estas operaciones se ejecutan de manera

3
más eficiente y con menos código de lo que es posible usando las secuencias integradas
de Python.

Una creciente plétora de paquetes científicos y matemáticos basados en Python utilizan


matrices NumPy; aunque estos suelen admitir la entrada de secuencia de Python,
convierten dicha entrada en matrices NumPy antes del procesamiento y, a menudo,
generan matrices NumPy. En otras palabras, para usar de manera eficiente gran parte
(quizás incluso la mayoría) del software científico / matemático basado en Python de hoy
en día, simplemente saber cómo usar los tipos de secuencia integrados de Python es
insuficiente; también es necesario saber cómo usar las matrices NumPy. Se dice mucho
que NumPy es el equivalente a MatLab, incluso más potente y es gratuito.
Organizaciones muy reconocidas como la NASA, Los Alamos y JPMorgan, utilizan
NumPy para operaciones en el ámbito científico y financiero. Para conocer más acerca
de NumPy puede visitar https://www.numpy.org/

3.1 ¿Por qué NumPy es rápido?

La vectorización describe la ausencia de cualquier bucle explícito, indexación, etc., en el


código; estas cosas están sucediendo, por supuesto, solo "detrás de escena". El código
vectorizado tiene muchas ventajas, Aquí un ejemplo aplicando bucle repetitivo:

3.2 ¿Cómo importar NumPy?

Para acceder a NumPy y sus funciones, lo importamos en su código Python de esta


manera:

4
importar numpy como np
Acortamos el nombre importado a np para una mejor legibilidad del código usando
NumPy. Esta es una convención ampliamente adoptada que debe seguir para que
cualquier persona que trabaje con su código pueda entenderla fácilmente.
El código vectorizado es más conciso y más fácil de leer en función de la gráfica anterior.

Menos líneas de código generalmente significan menos errores, el código se parece más
a la notación matemática estándar (lo que facilita, por lo general, codificar correctamente
las construcciones matemáticas).

3.3 ¿Quién más usa NumPy?

NumPy es totalmente compatible con un enfoque orientado a objetos, comenzando, una


vez más, con ndarray. Por ejemplo, ndarray es una clase que posee numerosos métodos
y atributos. Muchos de sus métodos se reflejan en funciones en el espacio de nombres
NumPy más externo, lo que permite al programador codificar en el paradigma que
prefiera. Esta flexibilidad ha permitido que el dialecto de matriz NumPy y la clase ndarray
NumPy se conviertan en el lenguaje de facto de intercambio de datos multidimensional
utilizado en Python.

5
3.4 ¿Cuál es la diferencia entre una lista de Python y una matriz NumPy?

NumPy le ofrece una enorme variedad de formas rápidas y eficientes de crear matrices
y manipular datos numéricos dentro de ellas. Si bien una lista de Python puede contener
diferentes tipos de datos dentro de una sola lista, todos los elementos de una matriz
NumPy deben ser homogéneos. Las operaciones matemáticas que deben realizarse en
matrices serían extremadamente ineficaces si las matrices no fueran homogéneas.

3.5 ¿Por qué usar NumPy?


Las matrices NumPy son más rápidas y compactas que las listas de Python. Una matriz
consume menos memoria y es conveniente de usar. NumPy usa mucha menos memoria
para almacenar datos y proporciona un mecanismo para especificar los tipos de datos.
Esto permite optimizar aún más el código.

3.6 ¿Qué es una matriz?


Una matriz es una estructura de datos central de la biblioteca NumPy. Una matriz es una
cuadrícula de valores y contiene información sobre los datos sin procesar, cómo ubicar
un elemento y cómo interpretar un elemento. Tiene una cuadrícula de elementos que se
pueden indexar de varias formas. Los elementos son todos del mismo tipo, denominados
array dtype.
Una matriz puede ser indexada por una tupla de enteros no negativos, por booleanos,
por otra matriz o por enteros. El rango de la matriz es el número de dimensiones. La
forma de la matriz es una tupla de números enteros que dan el tamaño de la matriz a lo
largo de cada dimensión.
Una forma en que podemos inicializar matrices NumPy es a partir de listas de Python,
usando listas anidadas para datos bidimensionales o de mayor dimensión.
Por ejemplo:

6
El siguiente programa crea un array con la función arange() de NumPy con 10
elementos secuenciales del 0 al 10, el programa deberá mostrar primero los números
pares y después los números impares con compresión de listas :

Ejercicio 1. Programa que muestra primero los números pares y después los
números impares a partir de arreglo:

Considere el siguiente problema: se necesita un programa que permita ingresar una lista de N
elemento con una longitud máxima de 10 elementos, el programa no debe permitir ingresar
números repetidos:

Ejercicio 2. Programa que permita ingresar una lista de N elemento con una
longitud máxima de 10 elementos.

7
Considere el siguiente problema: se necesita almacenar información de Clientes en una
matriz:

Ejercicio 3. Programa que permita crear una matriz de cadena de caracteres


simulando un banco de datos de clientes.

Aplicando funciones básicas de NumPy como el método np.append() podríamos ir


alimentado los datos de la matriz, es importante añadir la propiedad axis para indicar si los
nuevos elementos que vamos agregar es por fila o columna. En este caso asignamos el
valor de 0 a axis, dado que es una nueva fila. Por ejemplo:

Para una nueva columna aplicamos el mismo método, es decir, los elementos que se agregan tienen
que venir en una matriz con el mismo número de filas y asignar el valor de 1 a axis. Ejemplo:

8
4. Métodos de ordenamiento aplicados a vectores

Entiéndase por ordenar un vector, al proceso de reorganizar un conjunto de datos, de forma


que se cree una secuencia de valores o datos con criterios ascendente o descendente, por lo
general se necesita este proceso de ordenamiento para facilitar la búsqueda de datos con
mayor eficiencia y rapidez, los desarrolladores han aplicado y mejorado diferentes algoritmos
con el objeto de mejorar los tiempos de reorganización de datos evitando ocupar mayores
recursos del computador, estos algoritmos han tenido la finalidad de aplicarlos entre otros
ejemplos en la: búsqueda y localizaciones en la guía telefónica, índices de libros, roles de
empleados, archivos de bibliotecas, diccionarios, fechas de eventos, entre otros.

En este apartado se explica algunos de los algoritmos de ordenamiento más conocidos:

4.1 Algoritmo de ordenamiento aplicando el método burbuja

El método de ordenamiento aplica un recorrido principal y múltiples recorridos secundarios,


el recorrido principal ubica el valor menor o mayor de todos los demás elementos del vector
y los recorridos secundarios permiten la búsqueda y reorganización de los valores menores
o mayores encontrados, el siguiente algoritmo describe el ordenamiento burbuja.
Antes de observar y analizar la lógica aplicada al método de ordenamiento, conozca el
propósito de las variables utilizadas en el algoritmo:
(n) Esta variable contiene el número de elementos del vector.
(i) Abreviación de posición, es la variable que apunta la posición de comparación fija y ubica
uno a uno los valores menores o mayores encontrados en el recorrido interno.
(x) Abreviación de comparar, es la variable que recorre uno a uno los elementos del vector
para compararlo con la posición fija del recorrido externo.

9
Explicación: El control for() del recorrido externo se encarga de ubicar de izquierda a derecha,
posición a posición los menores encontrados, el for() del recorrido interno se encarga de
apuntar posición a posición para permitir la comparación con la posición del recorrido externo
buscando los menores o mayores e intercambiarlos cuando se cumpla la condición, para
explicar la lógica con mayor detalle considere que se desea ordenar el siguiente vector:

Figura 3. Vector de ejemplo

4.2 Algoritmo de ordenamiento aplicando el método de selección

El siguiente algoritmo se lo conoce como el método de ordenamiento por selección de


intercambio, este método se basa en buscar en cada repetición interna el valor menor o mayor
de toda la lista, una vez encontrado lo almacena para compararlo con las siguientes
posiciones, cuando finaliza los recorridos internos, realiza el intercambio con la posición del
recorrido externo, considere el significado de cada variable utilizada en el algoritmo de
ordenamiento:

(n) Esta variable contiene el número de elementos del vector


10
(LLenar) Abreviación de posición fija, es la variable que apunta la posición que contendrá el
valor mayor encontrado en cada recorrido externo.

(posiMayor) Abreviación de posición del menor, es la variable que busca uno a uno los
elementos menores o mayores del vector para intercambiarlo con la posición de la variable
“LLenar” del recorrido externo.

(Ubicacion) Abreviación de comparar, es la variable que recorre uno a uno los elementos
del vector desde la posición “LLenar+1” hasta el límite del vector con la finalidad de buscar
los mayores para señalizar la posición del elemento meyor encontrado.

Explicación: el algoritmo utiliza 2 ciclos repetitivos, el for() externo es utilizado para recorrer
de forma descendente uno a uno y ubicar de derecha a izquierda los mayores encontrados,
utiliza la variable “posiMayor” para contener el índice que señala el elemento menor
encontrado, el for() del recorrido interno se encarga de posición a posición encontrar el valor
mayor para que la variable “posiMayor” obtenga la posición del valor mayor encontrado, una
vez cumplido el recorrido se produce el intercambio entre el valor señalado por el índice
“LLenar” y el valor señalado por el índice “posiMayor”.

11
4.3 Algoritmo de ordenamiento aplicando el método por inserción

El ordenamiento por inserción funciona de una manera ligeramente diferente. Siempre


mantiene una sublista ordenada en las posiciones inferiores de la lista. Cada ítem nuevo se
“inserta” de vuelta en la sublista previa de manera que la sublista ordenada sea un ítem más
larga.
Se asume que una lista con un ítem (posición 0) ya está ordenada. En cada pasada, una
para cada ítem desde 1 hasta n−1, el ítem actual se comparara contra los de la sublista ya
ordenada. A medida que revisamos en la sublista ya ordenada, desplazamos a la derecha
los ítems que sean mayores. Cuando llegamos a un ítem menor o al final de la sublista, se
puede insertar el ítem actual.
También es importante hacer una acotación sobre la diferencia entre desplazamiento e
intercambio. En general, una operación de desplazamiento requiere aproximadamente un
tercio de la carga de procesamiento de un intercambio ya que sólo se realiza una asignación.
En las pruebas de referencia, el ordenamiento por inserción logrará un rendimiento muy
bueno.

5. Resumen

Las variables organizadas en estructuras de arreglos son capaces contener grandes


cantidades de datos, para referenciarse cada una utilizan el mismo nombre e índices únicos
para identificarse de forma individual, las cadenas de caracteres son vectores o arreglos
unidimensionales de caracteres alfanuméricos, utiliza al final de una cadena un carácter
especial que define el límite de la estructura contenida utilizando ‘\0’, con las cadenas de
12
caracteres no se puede hacer uso de los operadores de comparación y aritméticos, ya que su
estructura es de múltiples variables contenidas y los operadores solo trabajan con valores o
variables de un único valor, para crear vectores de palabras se hace uso de la organización
bidimensional o matrices pero su tratamiento es como un vector de valores, es decir utilizando
solo un índice, los vectores se pueden inicializan, es decir asignarles un valor o dato inicial,
para lograrlo utiliza llaves ‘{ }’ y comas (,) para separar cada elemento de la inicialización, para
crear un vector se escribe el tipo de dato que desea contener, el nombre de la estructura y
entre corchetes el número de elementos a crear, es importante destacar que el primer
elemento de un arreglo tiene la posición cero [0] y el último la posición [N-1], está permitido
crear vectores sin límites en una inicialización, para lograrlo se utiliza corchetes vacíos ‘[ ]’,
toda estructura unidimensional tiene la posibilidad de aplicar métodos de ordenamiento, el
capítulo explica y ejemplifica e método de ordenamiento burbuja, de selección y de inserción,
considere que existen muchos más.

Las matrices utilizan dos índices para referenciar a cada elemento de su estructura, los cubos
utilizan tres índices, al igual que los vectores las matrices se crean considerando el mismo
orden, primero el tipo de dato seguido el nombre que desee para la estructura y por último dos
valores cada uno encerrado entre corchetes, el primero define el número de filas y el segundo
el número de columnas.

13
Bibliografía

[1] G. Demera, M. Pinargote, R. García, M. Rodríguez y D. Loor , Desarrollo Práctico de la Programación,


Portoviejo: ©Ediciones UTM- Universidad Técnica de Manabí., 2018.

[2] M. A. P. Basurto y J. M. C. Espín, Introducción a la programación en C, Barcelona, Espana: Edicions UPC,


2000.

14

También podría gustarte