Arreglos (arrays) multidimensionales y NumPy

Los arreglos multidimensionales (multi-dimensional arrays, en inglés) son una de las  características principales de varios frameworks de Inteligencia Artificial (AI). Pero, ¿qué es un arreglo o array en programación? Revisemos algunos términos básicos.

  • Array o arreglo: es una estructura de datos que consiste en una “lista de datos”.
  • Class y object: una clase (class) es una plantilla o template (blueprint) que proporciona instrucciones sobre cómo crear objetos. Por su parte, un objeto es una “combinación de variables, funciones o estructuras de datos”.
  • Float o flotante: un número con decimales.
  • Function o función: se trata de un “programa que realiza una tarea específica” y devuelve un valor versus un procedimiento que “realiza alguna operación pero no devuelve un valor”.
  • Integer o entero: número entero sin decimales. Representado con la nomenclatura ‘int’ en código de software.
  • List o lista: valores almacenados en una secuencia.
  • Loop ou Bucle: es un “código que se ejecuta solo repetidamente”.
  • Arreglo multidimensional: “un arreglo de 2 o más dimensiones” y “en una matriz, las 2 dimensiones están representadas por líneas y columnas”.
  • String o línea de texto: en un programa, generalmente es texto que se encuentra entre comillas.
  • Tensor: es la “entidad matemática que vive en una estructura e interactúa con otras entidades matemáticas”. Esta puede ser representada por un cubo 0-D, 1-D o 3-D.
  • Variable: es un valor almacenado en una dirección de memoria.

El instructor en línea Sam Lavigne explica en este video el propósito de un arreglo. Lavigne crea un programa simple en el que dos burbujas flotan desde la parte inferior de la pantalla hasta la parte superior. En el programa, las dos burbujas (objetos) se representan de la siguiente manera:

Bubble b1;
Bubble b2;

Si un programador quiere cinco burbujas en el programa, simplemente agrega más líneas de código como estas:

Bubble b1;
Bubble b2;
Bubble b3;
Bubble b4;
Bubble b5;

¿Qué sucede si el programador quiere 1 millón de burbujas? No se podría usar este método. En cambio, el programador puede crear un arreglo que es una “lista de datos” en una sola línea de código.

Además, Sam demuestra cómo se almacenan los valores en la memoria RAM. En la siguiente ilustración (realizada por Sam), en el lado izquierdo, un solo entero (int) igual a 5 se almacena en una ubicación en RAM llamada val. En el lado derecho, varios enteros llamados valores se almacenan en RAM como una lista.   

This image has an empty alt attribute; its file name is image-1024x477.png
Fuente: Youtube

Aunque los arreglos son útiles en algunos casos, para otros su uso se vuelve engorroso. Joe James, un instructor en línea describe en este video el arreglo de Python NumPy como una “biblioteca de arreglos multidimensionales de alto rendimiento que se utiliza para el análisis numérico.” Afirma que los tres beneficios principales de los arreglos NumPy son 

1) Ahorro en el tiempo de codificación.

2) Ejecución más rápida que los arreglos estándar. 

3) Menor uso de memoria. 

Un caso de uso que funciona mejor con arreglo o array NumPy es cuando un programador necesita aplicar una “operación matemática a cada elemento en un arreglo”. En la siguiente ilustración, hay un código para realizar esta operación con una lista y un arreglo NumPy. 

Using Python List
for i in range (len(my_list)):
         my_list [i] *=3

Using NumPy Array
my_array *=3

Como Joe demuestra en el video, cuando una operación matemática se realiza con una lista, el código utiliza un “bucle (loop) for para iterar a través de la lista antes de que pueda multiplicarlo por un 3 a medida que pasa por cada elemento (así se explica el código en la parte superior). Con NumPy, solo se requiere una línea de código (código en la parte inferior). 

El desarrollador Keith Galli afirma que los arreglos NumPy se pueden usar para almacenar datos en matrices 1-D, matrices 2-D, matrices 3-D, o cuantas se requieran. Las listas de Python no admiten arreglos multidimensionales.  

Fuente: Github

La razón por la que un arreglo NumPy es más rápido es porque se almacenan datos de manera contigua (ilustrado a continuación), mientras que una lista almacena datos en diferentes secciones de la memoria RAM. Por lo tanto, una lista tarda más en almacenar datos y leer/recuperar datos.


Fuente: Keith Galli

Scroll to Top