Tweet Share Share

Última actualización el 19 de agosto de 2020

El desarrollo de modelos de aprendizaje automático en Python a menudo requiere el uso de arrays NumPy.

Las matrices NumPy son estructuras de datos eficientes para trabajar con datos en Python, y los modelos de aprendizaje automático como los de la biblioteca scikit-learn, y los modelos de aprendizaje profundo como los de la biblioteca Keras, esperan datos de entrada en el formato de matrices NumPy y hacen predicciones en el formato de matrices NumPy.

Como tal, es común necesitar guardar arrays NumPy en un archivo.

Por ejemplo, puedes preparar tus datos con transformaciones como el escalado y necesitar guardarlos en un archivo para su uso posterior. También puede usar un modelo para hacer predicciones y necesita guardar las predicciones en un archivo para su uso posterior.

En este tutorial, descubrirá cómo guardar sus matrices NumPy en un archivo.

Después de completar este tutorial, usted sabrá:

  • Cómo guardar arrays NumPy a archivos con formato CSV.
  • Cómo guardar arrays NumPy a archivos con formato NPY.
  • Cómo guardar arrays NumPy a archivos con formato comprimido NPZ.

Comienza tu proyecto con mi nuevo libro Machine Learning Mastery With Python, que incluye tutoriales paso a paso y los archivos de código fuente de Python para todos los ejemplos.

Comencemos.

Cómo guardar un array de NumPy en un archivo para el aprendizaje automático

Cómo guardar un array de NumPy en un archivo para el aprendizaje automático
Foto de Chris Combe, algunos derechos reservados.

Resumen del tutorial

Este tutorial está dividido en tres partes; son:

  1. Guardar un Array NumPy en un archivo .CSV (ASCII)
  2. Guardar la matriz NumPy en un archivo .NPY (binario)
  3. Guardar la matriz NumPy en un archivo .NPZ (comprimido)

Guardar la matriz NumPy en un archivo .CSV File (ASCII)

El formato de archivo más común para almacenar datos numéricos en archivos es el formato de variables separadas por comas, o CSV para abreviar.

Es muy probable que sus datos de entrenamiento y los datos de entrada a sus modelos se almacenen en archivos CSV.

Puede ser conveniente guardar los datos en archivos CSV, como las predicciones de un modelo.

Puede guardar sus matrices NumPy en archivos CSV utilizando la función savetxt(). Esta función toma un nombre de archivo y una matriz como argumentos y guarda la matriz en formato CSV.

También debe especificar el delimitador; este es el carácter utilizado para separar cada variable en el archivo, más comúnmente una coma. Esto se puede establecer a través del argumento «delimitador».

1.1 Ejemplo de guardar una matriz NumPy a un archivo CSV

El siguiente ejemplo demuestra cómo guardar una sola matriz NumPy a formato CSV.

1
2
3
4
5
6
7

# guardar numpy array as csv file
from numpy import asarray
from numpy import savetxt
# define data
data = asarray(])
# save to csv file
savetxt(‘data.csv’, data, delimiter=’,’)

La ejecución del ejemplo definirá un array NumPy y lo guardará en el fichero ‘data.csv’.

El array tiene una única fila de datos con 10 columnas. Esperaríamos que estos datos se guardaran en un archivo CSV como una sola fila de datos.

Después de ejecutar el ejemplo, podemos inspeccionar el contenido de ‘data.csv’.

Deberíamos ver lo siguiente:

1
0.000000000000000000e+00,1.000000000000000000e+00,2.000000000000000000e+00,3.000000000000000000e+00,4.000000000000000000e+00,5.000000000000000000e+00,6.000000000000000000e+00,7.00000000000000e+00,8.00000000000000e+00,9.00000000000000e+00

Podemos ver que los datos se guardan correctamente como una sola fila y que los números en coma flotante del array se guardaron con precisión completa.

1.2 Ejemplo de carga de un array NumPy a partir de un fichero CSV

Podemos cargar estos datos posteriormente como un array NumPy utilizando la función loadtext() y especificando el nombre del fichero y el mismo delimitador de comas.

El ejemplo completo es el siguiente.

1
2
3
4
5
6

# load numpy array from csv file
from numpy import loadtxt
# load array
data = loadtxt(‘data.csv’, delimiter=’,’)
# imprimir el array
print(data)

Al ejecutar el ejemplo se cargan los datos del archivo CSV y se imprime el contenido, coincidiendo con nuestra única fila con 10 columnas definida en el ejemplo anterior.

1

Guardar la matriz NumPy en un archivo .NPY File (binary)

A veces tenemos muchos datos en arrays de NumPy que deseamos guardar de forma eficiente, pero que sólo necesitamos utilizar en otro programa de Python.

Por lo tanto, podemos guardar las matrices NumPy en un formato binario nativo que sea eficiente tanto para guardar como para cargar.

Esto es común para los datos de entrada que se han preparado, como los datos transformados, que tendrán que ser utilizados como base para probar una serie de modelos de aprendizaje automático en el futuro o ejecutar muchos experimentos.

El formato de archivo .npy es apropiado para este caso de uso y se denomina simplemente «formato NumPy».

Esto puede lograrse utilizando la función NumPy save() y especificando el nombre del archivo y el array que se va a guardar.

2.1 Ejemplo de cómo guardar un array NumPy en un archivo NPY

El siguiente ejemplo define nuestro array NumPy bidimensional y lo guarda en un archivo .npy.

1
2
3
4
5
6
7

# guardar array numpy como archivo npy
from numpy import asarray
from numpy import save
# define data
data = asarray(])
# guardar en archivo npy
save(‘data.npy’, data)

Después de ejecutar el ejemplo, verás un nuevo archivo en el directorio con el nombre ‘data.npy’.

No puedes inspeccionar el contenido de este archivo directamente con tu editor de texto porque está en formato binario.

2.2 Ejemplo de carga de un array NumPy desde un archivo NPY

Puedes cargar este archivo como un array NumPy más tarde usando la función load().

El ejemplo completo aparece a continuación.

1
2
3
4
5
6

# load numpy array from npy file
from numpy import load
# load array
data = load(‘data.npy’)
# imprimir el array
print(data)

Al ejecutar el ejemplo se cargará el fichero y se imprimirá el contenido, confirmando que tanto se ha cargado correctamente como que el contenido coincide con lo que esperamos en el mismo formato bidimensional.

1
]

Guardar la matriz NumPy en un archivo .NPZ File (compressed)

A veces, preparamos datos para el modelado que necesita ser reutilizado a través de múltiples experimentos, pero los datos son grandes.

Esto podría ser pre-procesado NumPy matrices como un corpus de texto (enteros) o una colección de datos de imagen reescalada (píxeles). En estos casos, es deseable tanto guardar los datos en un archivo, pero también en un formato comprimido.

Esto permite reducir los gigabytes de datos a cientos de megabytes y permite una fácil transmisión a otros servidores de computación en la nube para largas ejecuciones de algoritmos.

El formato de archivo .npz es apropiado para este caso y soporta una versión comprimida del formato de archivo NumPy nativo.

La función NumPy savez_compressed() permite guardar múltiples matrices NumPy en un único archivo .npz comprimido.

3.1 Ejemplo de guardar una matriz NumPy en un archivo NPZ

Podemos utilizar esta función para guardar nuestra única matriz NumPy en un archivo comprimido.

El ejemplo completo aparece a continuación.

1
2
3
4
5
6
7

# save numpy array como npz file
from numpy import asarray
from numpy import savez_compressed
# define data
data = asarray(])
# save to npy file
savez_compressed(‘data.npz’, data)

La ejecución del ejemplo define el array y lo guarda en un fichero en formato numpy comprimido con el nombre ‘data.npz’.

Al igual que con el formato .npy, no podemos inspeccionar el contenido del fichero guardado con un editor de texto porque el formato del fichero es binario.

3.2 Ejemplo de carga de una matriz NumPy desde un archivo NPZ

Podemos cargar este archivo más tarde utilizando la misma función load() de la sección anterior.

En este caso, la función savez_compressed() admite guardar múltiples matrices en un solo archivo. Por lo tanto, la función load() puede cargar múltiples arrays.

Los arrays cargados son devueltos por la función load() en un dict con los nombres ‘arr_0’ para el primer array, ‘arr_1’ para el segundo, y así sucesivamente.

El ejemplo completo de carga de nuestro único array aparece a continuación.

1
2
3
4
5
6
7
8

# load numpy array from npz file
from numpy import load
# load dict of arrays
dict_data = load(‘data.npz’)
# extrae el primer array
data = dict_data
# imprime el array
print(data)

Al ejecutar el ejemplo se carga el fichero numpy comprimido que contiene un diccionario de arrays, luego extrae el primer array que guardamos (sólo guardamos uno), luego imprime el contenido, confirmando que los valores y la forma del array coincide con lo que guardamos en primer lugar.

1
]

Lectura adicional

Esta sección ofrece más recursos sobre el tema si se quiere profundizar.

Posts

  • Cómo cargar datos de aprendizaje automático en Python
  • Una suave introducción a los arrays NumPy en Python
  • Cómo indexar, cortar y remodelar arrays NumPy para el aprendizaje automático

APIs

  • numpy.savetxt API
  • numpy.save API
  • numpy.savez API
  • numpy.savez_compressed API
  • numpy.load API
  • numpy.loadtxt API

Summary

En este tutorial, has descubierto cómo guardar tus arrays de NumPy en un archivo.

Específicamente, usted aprendió:

  • Cómo guardar arrays NumPy a archivos con formato CSV.
  • Cómo guardar arrays NumPy a archivos con formato NPY.
  • Cómo guardar arrays de NumPy en archivos comprimidos con formato NPZ.

¿Tienes alguna pregunta?
Haz tus preguntas en los comentarios de abajo y haré lo posible por responder.

¡Descubre el aprendizaje automático rápido en Python!

Master Machine Learning With Python

Desarrolla tus propios modelos en minutos

…con sólo unas pocas líneas de código scikit-learn

Aprende cómo en mi nuevo Ebook:
Machine Learning Mastery With Python

Cubre tutoriales de autoaprendizaje y proyectos integrales como:
Carga de datos, visualización, modelado, ajuste y mucho más…

Traiga por fin el aprendizaje automático a
sus propios proyectos

Olvide lo académico. Sólo resultados.

Vea lo que hay dentro

Tweet Share Share

Deja una respuesta

Tu dirección de correo electrónico no será publicada.