es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Guardar grandes matrices de numpy utilizando Python

Tengo un dataframe con solo dos columnas, una es de texto y la otra contiene valores de la biblioteca numpy, que pueden tener más de 170000 elementos. El problema es cómo guardar estos grandes arrays de numpy como archivos, para poder cargarlos de nuevo más tarde. Al intentar guardarlos como CVS, solo se guardan como una cadena corta, perdiendo los valores reales:

[-8.0152120e-07  2.8887976e-05  3.3898741e-05 ... -1.3205040e-01
 -9.4032057e-02  0.0000000e+00]

Pensé que tal vez podría guardarlos como texto uno por uno, pero ¿hay alguna manera elegante de hacer esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Hay varias formas de guardar matrices numpy como archivos manteniendo los valores completos de los datos. Una forma es utilizar los métodos incorporados de numpy para guardar y cargar matrices, específicamente las funciones save y load.

    Para guardar una matriz numpy en un archivo:

    import numpy as np
    
    # suponiendo que la matriz numpy se almacena en una variable llamada "my_array"
    np.save('nombre_archivo.npy', my_array)
    

    Esto guardará la matriz en un formato binario en el archivo nombre_archivo.npy.

    Para cargar la matriz de vuelta en la memoria:

    import numpy as np
    
    my_array = np.load('nombre_archivo.npy')
    

    Otra opción es convertir la matriz numpy en un dataframe de pandas y guardar el dataframe utilizando la función incorporada to_csv de pandas. Al guardar el dataframe, puedes especificar el parámetro sep como un delimitador no predeterminado como | en lugar de , para evitar perder información.

    import pandas as pd
    
    # suponiendo que el dataframe se almacena en una variable llamada "my_dataframe"
    my_dataframe.to_csv('nombre_archivo.csv', sep='|')
    

    Al cargar los datos de vuelta desde el archivo CSV, puedes utilizar la función read_csv de pandas con el mismo delimitador especificado:

    my_dataframe = pd.read_csv('nombre_archivo.csv', sep='|')
    

    Ten en cuenta que estos métodos pueden tener diferentes características de rendimiento dependiendo del tamaño de la matriz numpy y del archivo CSV. Si tienes una matriz numpy grande, utilizar numpy.save y numpy.load puede ser más eficiente.

Comments are closed.