numpy
Archivo IO con numpy
Buscar..
Guardando y cargando matrices numpy usando archivos binarios
x = np.random.random([100,100])
x.tofile('/path/to/dir/saved_binary.npy')
y = fromfile('/path/to/dir/saved_binary.npy')
z = y.reshape(100,100)
all(x==z)
# Output:
# True
Cargando datos numéricos de archivos de texto con estructura consistente.
La función np.loadtxt
se puede usar para leer archivos similares a csv:
# File:
# # Col_1 Col_2
# 1, 1
# 2, 4
# 3, 9
np.loadtxt('/path/to/dir/csvlike.txt', delimiter=',', comments='#')
# Output:
# array([[ 1., 1.],
# [ 2., 4.],
# [ 3., 9.]])
El mismo archivo podría leerse usando una expresión regular con np.fromregex
:
np.fromregex('/path/to/dir/csvlike.txt', r'(\d+),\s(\d+)', np.int64)
# Output:
# array([[1, 1],
# [2, 4],
# [3, 9]])
Guardando datos como archivo ASCII estilo CSV
De forma np.loadtxt
a np.loadtxt
, np.savetxt
se puede usar para guardar datos en un archivo ASCII
import numpy as np
x = np.random.random([100,100])
np.savetxt("filename.txt", x)
Para controlar el formato:
np.savetxt("filename.txt", x, delimiter=", " ,
newline="\n", comments="$ ", fmt="%1.2f",
header="commented example text")
Salida:
$ commented example text
0.30, 0.61, 0.34, 0.13, 0.52, 0.62, 0.35, 0.87, 0.48, [...]
Leyendo archivos CSV
Tres funciones principales disponibles (descripción de las páginas del manual):
fromfile
: una forma altamente eficiente de leer datos binarios con un tipo de datos conocido, así como analizar archivos de texto con formato simple. Los datos escritos usando el método tofile se pueden leer usando esta función.
genfromtxt
: carga datos de un archivo de texto, con los valores faltantes manejados como se especifica. Cada línea después de las primeras líneas skip_header se divide en el carácter delimitador y los caracteres que siguen al carácter de comentarios se descartan.
loadtxt
: carga los datos de un archivo de texto. Cada fila en el archivo de texto debe tener el mismo número de valores.
genfromtxt
es una función de envoltorio para loadtxt
. genfromtxt
es el más sencillo de usar, ya que tiene muchos parámetros para manejar el archivo de entrada.
Número consistente de columnas, tipo de datos consistente (numérico o cadena):
Dado un archivo de entrada, myfile.csv
con el contenido:
#descriptive text line to skip
1.0, 2, 3
4, 5.5, 6
import numpy as np
np.genfromtxt('path/to/myfile.csv',delimiter=',',skiprows=1)
da una matriz:
array([[ 1. , 2. , 3. ],
[ 4. , 5.5, 6. ]])
Número consistente de columnas, tipo de datos mixtos (a través de columnas):
1 2.0000 buckle_my_shoe
3 4.0000 margery_door
import numpy as np
np.genfromtxt('filename', dtype= None)
array([(1, 2.0, 'buckle_my_shoe'), (3, 4.0, 'margery_door')],
dtype=[('f0', '<i4'), ('f1', '<f8'), ('f2', '|S14')])
Tenga en cuenta que el uso de dtype=None
da lugar a una nueva versión.
Cantidad inconsistente de columnas:
archivo: 1 2 3 4 5 6 7 8 9 10 11 22 13 14 15 16 17 18 19 20 21 22 23 24
En la matriz de una sola fila:
result=np.fromfile(path_to_file,dtype=float,sep="\t",count=-1)