En los dos últimos artículos, presentamos algunos usos básicos de la función numpy y el uso de su función de extensión. Aquí hay una introducción a la biblioteca numpy para leer y escribir archivos.
Uno, usa numpy para leer archivos
1. numpy para almacenar, almacenar y leer archivos csv
CSV (con una coma como separador) es un formato de archivo común que se usa para almacenar datos por lotes
almacenamiento:
# 文件存储
np.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n',
header='', footer='', comments='# ', encoding=None)
-
fname: archivo, cadena, puede ser un archivo comprimido de .gz o .bz2
-
X: matriz almacenada en el archivo
-
fmt: el formato del archivo escrito, por ejemplo:% d% .2f% .18e
-
delimitador: la cadena para dividir la columna, el valor predeterminado es cualquier espacio
-
nueva línea: la cadena que divide la línea
-
header: encabezado del archivo
Leer:
# 文件读取
np.loadtxt(fname, delimiter=None, skiprows=0,
usecols=None)
-
fname: el nombre del archivo a leer
-
delimitador: la cadena para dividir la columna, el valor predeterminado es cualquier espacio
-
skiprows: omite la primera fila, el valor predeterminado es 0, generalmente omite el encabezado del archivo
-
usecols: la columna deseada
Ejemplo 1. Almacenamiento:
# 存储
import numpy as np
a = np.arange(50).reshape(5, 10)
# 保存为.txt文件
file = np.savetxt('./test/a.csv', a, fmt = '%d',delimiter=',')
Los archivos guardados son los siguientes:
Ejemplo 2, lea:
# 文件读取
np_file = np.loadtxt('./test/a.csv', delimiter=',')
print(np_file)
# 只取第一列和第五列数据
np_file1 = np.loadtxt('./test/a.csv',usecols=(0, 4), delimiter=',')
print(np_file1)
"""
np_file: [[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
[10. 11. 12. 13. 14. 15. 16. 17. 18. 19.]
[20. 21. 22. 23. 24. 25. 26. 27. 28. 29.]
[30. 31. 32. 33. 34. 35. 36. 37. 38. 39.]
[40. 41. 42. 43. 44. 45. 46. 47. 48. 49.]]
第1列和第五列数据 [[ 0. 4.]
[10. 14.]
[20. 24.]
[30. 34.]
[40. 44.]]
"""
Nota: csv solo puede almacenar de manera efectiva matrices unidimensionales y bidimensionales, y np.savetxt () y np.loadtxt () solo pueden almacenar de manera efectiva matrices unidimensionales y bidimensionales.
2. numpy realiza acceso a datos multidimensionales:
almacenamiento:
a.tofile(fid, sep="", format="%s")
-
fid: archivo, cadena
-
sep: cadena de segmentación de datos, si es una cadena vacía, escriba en el archivo como binario
-
formato: el formato de los datos escritos
Leer:
fromfile(file, dtype=float, count=-1, sep='')
-
archivo: archivo, cadena
-
dtype: el tipo de datos leídos
-
count: el número de elementos leídos, -1 significa leer el archivo completo
-
sep: cadena de segmentación de datos, si es una cadena vacía, escriba el archivo como binario
almacenamiento:
# 多维数组的存储
b = np.arange(50).reshape(5, 5, 2)
b.tofile("./test/b.bat", sep=",", format="%d")
Leer:
# 多维数组的读取
np.fromfile('./test/b.bat', dtype=np.int, sep=',')
"""
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49])
"""
np.fromfile('./test/b.bat', dtype=np.int, sep=',').reshape(5, 5,2)
"""
array([[[ 0, 1], [ 2, 3], [ 4, 5], [ 6, 7], [ 8, 9]],
[[10, 11], [12, 13], [14, 15], [16, 17], [18, 19]],
[[20, 21], [22, 23], [24, 25], [26, 27], [28, 29]],
[[30, 31], [32, 33], [34, 35], [36, 37], [38, 39]],
[[40, 41], [42, 43], [44, 45], [46, 47], [48, 49]]])
"""
Nota : Este método necesita conocer la dimensión y el tipo de elemento de la matriz cuando se almacena en el archivo durante la lectura, y b.tofile () y np.fromfile () deben usarse juntos para almacenar información adicional a través del archivo de metadatos.
3. Cómodo acceso a archivos en numpy
np.save(file, arr) np.savez(file, arr)
-
file: nombre del archivo, con .npy como extensión, y la extensión comprimida es .npz
-
arr: variable de matriz
load () reconoce automáticamente los archivos npz y devuelve un objeto similar a un diccionario. El contenido de la matriz se puede obtener utilizando el nombre de la matriz como clave.
np.load(file)
- file: nombre del archivo, con .npy como extensión, y la extensión comprimida es .npz
a = np.arange(50).reshape(5,5,2)
np.save("a.npy", a)
b = np.load('a.npy')
print(b)
Para almacenar datos de esta manera, es conveniente guardar el conjunto de entrenamiento, el conjunto de validación, el conjunto de prueba y sus etiquetas en aprendizaje profundo. Cuando se almacena de esta manera, lo que necesita cargar y la cantidad de archivos se reduce considerablemente. El nombre del archivo se cambiará en todas partes. Es una mejor forma de almacenar datos.
Maravillosa recomendación
Cálculo de similitud de imagen de reconocimiento de imagen de Python
Instale la versión de GPU de TensorFlow (cuda + cudnn) en win10
Código de visualización de regresión lineal TensorFlow-GPU y resumen del problema
Clasificación de todos los artículos sobre rastreadores
Descifrado de código de verificación deslizante automático basado en selenio