Python

NumPy: Crear matrices vacías en NumPy y adjuntar filas o columnas

El método empty() permite crear matrices en NumPy sin la necesidad de inicializar los valores de estos. Esto es, crea matrices con los valores que en ese momento se encuentren en memoria. Aunque también se pueden crear matrices varias sin elementos en una dimensión. Junto a este método se puede utilizar el método append() para ir agregando poco a poco los valores de las matrices. Con lo que se puede crear matrices vacías en NumPy y adjuntar filas o columnas.

El método empty() de NumPy

Al llamar al método empty() de NumPy indicando las dimensiones de una matriz y, opcionalmente, el tipo de dato se creará un elemento sin la necesidad de asignar valores a esta. Esto creará el objeto, pero los valores eran los que en ese momento estén en memoria, lo que puede aparentar aleatoriedad. Por ejemplo, se puede crear una matriz de dos por tres con números enteros

import numpy as np

array = np.empty((2, 3), int)
array([[-8070450532247928832,  4611694788215336344,  7957688336701784067],
       [ 3417785037640393060,    13337528831520302,      984741549538594]])

Al ejecutar en otro momento los valores observados cambian aleatoriamente. Por otro lado, si ya se dispone de una matriz y se quiere crear otra similar sin inicializar los valores se puede usar el método empty_like().

array = np.empty_like([[1,1],[1,1]])
array([[-8070450532247928832, -8070450532247928832],
       [-4611677248642875390,      562949953421312]])

Al igual que en el caso anterior los valores cambiarán de una ejecución a otra. Ahora se pueden usar empty() para crear elementos realmente vacíos, indicando que una de las dimensiones es cero.

array = np.empty((0, 3), int)
array([], shape=(0, 3), dtype=int64)

Agregar fila con append() en NumPy

Una vez se dispone un array vacío o no, se pueden agregar filas y columnas con el método append(). Método al que solamente se le debe indicar el objeto original, el array a agregar y el eje en el que se desea agregar. Cero en el caso de las filas y uno en el de las columnas. Así, para agregar dos columnas al array anterior solamente se debería hacer.

array = np.append(array, np.array([[11, 12, 13]]), axis=0)
array = np.append(array, np.array([[21, 22, 23]]), axis=0)
array([[11, 12, 13],
       [21, 22, 23]])

Cuando se necesita agregar más de una fila este proceso puede ser un poco tedioso. Agregar fila a fila, especialmente si ya se dispone de los datos en una matriz. Pero append() puede adjuntar directamente una matriz a otra, mientras las dimensiones sean correctas. Algo que se puede ver en el siguiente ejemplo.

array = np.append(array, np.array([[31, 32, 33], [41, 42, 43]]), axis=0)
array([[11, 12, 13],
       [21, 22, 23],
       [31, 32, 33],
       [41, 42, 43]])

Agregar columnas con append() en NumPy

Para agregar columnas en primer lugar hay que agregar un matriz vacía sin columnas con empty(). Para, posteriormente, agregar un vector columna con append().

array = np.empty((3, 0), int)
array = np.append(array, np.array([[11], [21], [31]]), axis=1)
array([[11],
       [21],
       [31]])

Nótese que en este caso el vector se ha creado siendo un vector columna, algo que se puede evitar con el método transpose() que posen los arrays de NumPy. Se puede crear un vector fila, más fácil de escribir, y trasponer.

array = np.append(array, np.array([[12, 22, 32]]).transpose(), axis=1)
array([[11, 12],
       [21, 22],
       [31, 32]])

Al igual que en el caso de las filas también se puede agregar más de una columna mediante de una matriz.

array = np.append(array, np.array([[13, 23, 33], [14, 24, 34]]).transpose(), axis=1)
array([[11, 12, 13, 14],
       [21, 22, 23, 24],
       [31, 32, 33, 34]])

Conclusiones

En esta ocasión se ha visto cómo crear matrices vacías en NumPy sin la necesidad de inicializar estas. Proceso que nos permite evitar ciertos pasos y recurrir a funciones como ones() o zeros() para crear los objetos con los que vamos a trabajar.

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: NumPy

Recent Posts

Método del codo: interpretación correcta y limitaciones

Cuando usas k-means tienes que decidir algo incómodo de entrada: cuántos grupos, , vas a…

19 horas ago

Errores comunes al interpretar resultados estadísticos

La estadística no suele fallar en los cálculos: falla en la interpretación. El test está…

6 días ago

Dashboard CLV: cuatro modelos, un mismo dataset, conclusiones muy distintas

Los artículos anteriores de esta serie cubrieron cuatro formas de mirar el valor del cliente:…

1 semana ago

Curiosidad: Por qué la criptografía habla siempre de Alice y Bob

Quien se acerca a la criptografía descubre enseguida a dos personajes que aparecen en casi…

2 semanas ago

Desbalanceo de Clases en Credit Scoring: Por Qué Usamos Ponderación en lugar de Undersampling

En credit scoring el desbalanceo de clases es la norma, no la excepción. En una…

2 semanas ago

Curiosidad: El “bug”, la polilla y la leyenda de Grace Hopper

Cualquiera que programe usa la palabra bug a diario para referirse a un fallo en…

3 semanas ago

This website uses cookies.