¿Hay alguna manera de volcar una matriz NumPy en un archivo CSV? Tengo una matriz 2D NumPy y necesito volcarla en formato legible para humanos.
545
numpy.savetxt
guarda una matriz en un archivo de texto.
import numpy
a = numpy.asarray([ [1,2,3], [4,5,6], [7,8,9] ])
numpy.savetxt("foo.csv", a, delimiter=",")
numpy.array
de cadenas. ¿Podría prescribir un método para guardar como csv para unnumpy.array
objeto que contiene cadenas?fmt='%s'
Puedes usar
pandas
. Requiere algo de memoria adicional, por lo que no siempre es posible, pero es muy rápido y fácil de usar.si no quieres un encabezado o índice, usa
to_csv("/path/to/file.csv", header=None, index=None)
fuente
df.to_csv("file_path.csv", header=None)
header=None, index=None
eliminan la fila del encabezado y la columna de índice.comments
argumento de la palabra clave en''
,#
se suprimirá.tofile
Es una función conveniente para hacer esto:La página del manual tiene algunas notas útiles:
Nota. Esta función no produce archivos csv de varias líneas, guarda todo en una línea.
fuente
Escribir matrices de registros como archivos CSV con encabezados requiere un poco más de trabajo.
Este ejemplo lee un archivo CSV con el encabezado en la primera línea, luego escribe el mismo archivo.
Tenga en cuenta que este ejemplo no considera cadenas con comas. Para considerar las comillas para datos no numéricos, use el
csv
paquete:fuente
Como ya se discutió, la mejor manera de volcar la matriz en un archivo CSV es mediante el uso de
.savetxt(...)
método. Sin embargo, hay ciertas cosas que debemos saber para hacerlo correctamente.Por ejemplo, si tiene una matriz con numpy
dtype = np.int32
comoy quiero guardar usando
savetxt
comoAlmacenará los datos en formato exponencial de coma flotante como
Tendrá que cambiar el formato utilizando un parámetro llamado
fmt
comopara almacenar datos en su formato original
Guardar datos en formato comprimido gz
Además,
savetxt
se puede usar para almacenar datos en.gz
formato comprimido que pueden ser útiles al transferir datos a través de la red.Solo necesitamos cambiar la extensión del archivo ya que
.gz
numpy se encargará de todo automáticamenteEspero eso ayude
fuente
fmt="%d"
era lo que estaba buscando. ¡Gracias!Creo que también puedes lograr esto de la siguiente manera:
ej. # 1:
ej. # 2:
fuente
si quieres escribir en la columna:
Aquí 'a' es el nombre de la matriz numpy y 'archivo' es la variable para escribir en un archivo.
Si quieres escribir en fila:
fuente
Si desea guardar su matriz numpy (por ejemplo
your_array = np.array([[1,2],[3,4]])
) en una celda, puede convertirla primero conyour_array.tolist()
.Luego guárdelo de la forma normal en una celda, con
delimiter=';'
y la celda en el archivo csv se verá así[[1, 2], [2, 4]]
Entonces podría restaurar su matriz de esta manera:
your_array = np.array(ast.literal_eval(cell_string))
fuente
También puede hacerlo con Python puro sin usar ningún módulo.
fuente
En Python usamos el módulo csv.writer () para escribir datos en archivos csv. Este módulo es similar al módulo csv.reader ().
Un delimitador es una cadena utilizada para separar campos. El valor predeterminado es coma (,).
fuente