Para guardar de manera permanente los datos de memoria de un array Numpy para su posterior uso existen distintas opciones según sea el archivo de tipo binario, texto y CSV (Valores separados por comas).
Leer y escribir arrays Numpy en archivos de texto
loadtxt() y savetxt()
Leer y escribir los datos de arrays en archivos de texto.
# Escribir en un archivo de texto un array (10x3) generado # con números aleatorios del 1 al 4: a = np.random.randint(1, 5, (10,3), dtype=np.int8) print(a) # [[4 3 4] # [3 2 2] # [3 3 1] # [3 1 3] # [3 3 1] # [4 1 3] # [4 2 3] # [4 1 3] # [3 4 3] # [4 4 3]] np.savetxt('datos.txt', a) # Leer los datos de un archivo de texto y declarar un array: a = np.loadtxt('datos.txt') print(a) # [[4. 3. 4.] # [3. 2. 2.] # [3. 3. 1.] # [3. 1. 3.] # [3. 3. 1.] # [4. 1. 3.] # [4. 2. 3.] # [4. 1. 3.] # [3. 4. 3.] # [4. 4. 3.]]
Leer y escribir arrays Numpy en archivos CSV
loadtxt() y savetxt()
Leer y escribir los datos de arrays en archivos CSV (valores separados por comas).
# Escribir en un archivo CSV un array (10x3) generado con # números aleatorios del 1 al 4: a = np.random.randint(1, 5, (10,3)) print(a) np.savetxt("datos.csv", a, delimiter=",") # [[1 2 2] # [2 1 4] # [3 1 1] # [3 3 1] # [3 3 3] # [4 2 3] # [2 2 1] # [3 2 4] # [1 2 4] # [3 4 2]] # Leer los datos de un archivo CSV y declarar un array: a = np.loadtxt('datos.csv', dtype=np.int8, delimiter=',', skiprows=0) print(a) # [[1 2 2] # [2 1 4] # [3 1 1] # [3 3 1] # [3 3 3] # [4 2 3] # [2 2 1] # [3 2 4] # [1 2 4] # [3 4 2]]
Leer y escribir los datos de arrays en archivos binarios
fromfile() y tofile()
Leer y escribir los datos de arrays en archivos binarios.
# Escribir en un archivo binario un array (10x3) generado # con números aleatorios del 1 al 4: a = np.random.randint(1, 5, (10,3), dtype=np.int8) print(a) # [[4 3 4] # [3 2 2] # [3 3 1] # [3 1 3] # [3 3 1] # [4 1 3] # [4 2 3] # [4 1 3] # [3 4 3] # [4 4 3]] a.tofile('datos.dat') # Leer los datos del archivo binario y declarar un array: # Cuando se leen los datos con fromfile() se crea un vector # con 30 elementos porque los datos binarios se guardan de # forma consecutiva. Para obtener el array bidimensional # original después de leer hay que convertir el vector en un # array 2D (10x3) con el método reshape(). a = np.fromfile('datos.dat', dtype=np.int8) a = a.reshape(10, 3) print(a) # [[4 3 4] # [3 2 2] # [3 3 1] # [3 1 3] # [3 3 1] # [4 1 3] # [4 2 3] # [4 1 3] # [3 4 3] # [4 4 3]]
Leer y escribir cadenas de texto en archivos binarios
fromfile() y write()
Leer y escribir cadenas de texto en archivos.
# Para escribir una cadena en un archivo binario: cadena = b'Python para impacientes' archivo = open('datos.dat', 'wb') archivo.write(cadena) archivo.close() # Para leer la cadena y declarar el array: a = np.fromfile('datos.dat', count=6, dtype='S1') print(a) # [b'P' b'y' b't' b'h' b'o' b'n'] # Consultar otros argumentos admitidos: sep y offset
Leer y escribir listas en archivos binarios
pickle.load(), pickle.dump()
Leer y escribir listas Python en archivos binarios. Después de leer una lista de un archivo para convertir a array utilizar el método asarray().
# Escribir una lista en un archivo binario (con pickle): import pickle lista = [0.1, 0.2, 0.3, 0.4, 0.5] archivo = open('datos.dat', 'wb') pickle.dump(lista, archivo) archivo.close() # Leer la lista y declarar el array: archivo = open('datos.dat', 'rb') lista = pickle.load(archivo) a = np.asarray(lista) archivo.close() print(a) # [0.1 0.2 0.3 0.4 0.5])