English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

IO NumPy

NumPy introduce un formato de archivo simple para objetos ndarray: npy.

Los archivos npy se utilizan para almacenar los datos necesarios para reconstruir ndarray, gráficos, dtype y otra información.

Las funciones de E/S comunes incluyen:

Las funciones load() y save() son las dos principales funciones para leer y escribir datos de arreglos de archivos, por defecto, los arreglos se guardan en un formato binario original no comprimido en archivos con extensión .npy. La función savetxt() se utiliza para escribir varios arreglos en un archivo, por defecto, los arreglos se guardan en un formato binario original no comprimido en archivos con extensión .npz. Las funciones loadtxt() y savetxt() procesan archivos de texto normales (.txt, etc.)

numpy.save()

La función numpy.save() guarda el arreglo en un archivo con extensión .npy.
numpy.save(file, arr, allow_pickle=True, fix_imports=True)

参数说明:

file: Archivo a guardar, con extensión .npy. Si la ruta del archivo no termina con la extensión .npy, se añadirá automáticamente. arr: Arreglo a guardar allow_pickle: Opcional, valor booleano, permite usar Python pickles para guardar arreglos de objetos. Python pickle se utiliza para serializar y deserializar objetos antes de guardarlos en archivos de disco o leerlos desde archivos de disco. fix_imports: 可选,为了方便 Pyhton2 中读取 Python3 保存的数据。
 import numpy as np 
  
 a = np.array([1,2,3,4,5] 
  
 # 保存到 test.npy 文件上
 np.save('test.npy',a) 
  
 # 保存到 test1.npy 文件上,如果文件路径末尾没有扩展名 .npy,该扩展名会被自动加上
 np.save('test1.npy',a)

我们可以查看文件内容:

 $ cat test.npy 
 ?NUMPYv{'descr': '<i8', 'fortran_order': False, 'shape': (5,), } 
 $ cat test1.npy 
 ?NUMPYv{'descr': '<i8', 'fortran_order': False, 'shape': (5,), }

可以看出文件是乱码的,因为它们是 Numpy 专用的二进制格式后的数据。

我们可以使用 load() 函数来读取数据就可以正常显示了:

import numpy as np 
b = np.load('test.npy') 
print (b)

el resultado de salida es:

[1 2 3 4 5]

np.savez

numpy.savez() 函数将多个数组保存到以 npz 为扩展名的文件中。

numpy.savez(file, *args, **kwds)

参数说明:

file:要保存的文件,扩展名为 .npz,如果文件路径末尾没有扩展名 .npz,该扩展名会被自动加上。 args: 要保存的数组,可以使用关键字参数为数组起一个名字,非关键字参数传递的数组会自动起名为 arr_0, arr_1, … 。 kwds: 要保存的数组使用关键字名称。
 import numpy as np
 a = np.array([1,2,3],[4,5,6])
 b = np.arange(0, 1.0, 0.1)
 c = np.sin(b)
 # c 使用了关键字参数 sin_array
 np.savez("w3codebox.npz", a, b, sin_array = c)
 r = np.load("w3codebox.npz) 
 print(r.files) # 查看各个数组名称
 print(r['arr_0']) # 数组 a
 print(r['arr_'])1']) # 数组 b
 print(r['sin_array']) # 数组 c

el resultado de salida es:

 ['sin_array', 'arr_0', 'arr_']1']
 [[1 2 3]
  [4 5 6]]
 [0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
 [0. 0.09983342 0.19866933 0.29552021 0.38941834 0.47942554
  0.56464247 0.64421769 0.71735609 0.78332691]

savetxt()

La función savetxt() almacena los datos en un formato de archivo de texto simple, y la función correspondiente loadtxt() se utiliza para obtener los datos.

 np.loadtxt(FILENAME, dtype=int, delimiter=' ')
 np.savetxt(FILENAME, a, fmt="%d", delimiter=",")

el parámetro delimiter puede especificar varios delimitadores, funciones de conversión para columnas específicas, número de filas que se deben omitir, etc.

 import numpy as np
 a = np.array([1,2,3,4,5] 
 np.savetxt('out.txt',a) 
 b = np.loadtxt('out.txt') 
  
 print(b)

el resultado de salida es:

[1. 2. 3. 4. 5.]

使用 parámetro delimiter:

 import numpy as np
 a=np.arange(0,10,0.5).reshape(4,-1)
 np.savetxt("out.txt",a,fmt="%d",delimiter=",") # 改为保存为整数,以逗号分隔
 b = np.loadtxt("out.txt",delimiter=",") # load 时也要指定为逗号分隔
 print(b)
   [[0. 0. 1. 1. 2.]
  [2. 3. 3. 4. 4.]
  [5. 5. 6. 6. 7.]
  [7. 8. 8. 9. 9.]]