Escribiendo un arreglo numpy en un archivo de texto
Me encontré con un error al intentar escribir un error de numpy en un archivo de texto. Para plantear la pregunta, aquí está el código de abajo:
import numpy as np
a = np.arange(1,10)
sigma = open("sample",'w')
for row in a:
np.savetxt(sigma,row)
sigma.close()
arroja un error ValueError: Se esperaba una matriz de 1D o 2D, en su lugar se obtuvo una matriz de 0D
.
Lo resolví con este código:
a = np.arange(1,10)
sigma = open("sample",'w')
np.savetxt(sigma,a, newline="\n")
sigma.close()
Pero aún no sé por qué no funcionó mi primer intento. ¿Por qué mi matriz aparece como 0D? (Estoy usando Python 3.9.9)
davy.ai
El error ocurrió porque el bucle itera a través de cada elemento de
a
, lo que provoca que se pasen elementos individuales anp.savetxt()
en lugar del array completo.np.savetxt()
espera un array 1D o 2D, por lo tanto genera unValueError
cuando se le pasa un array 0D (un elemento individual). En el segundo intento,a
se pasa directamente anp.savetxt()
sin iterar sobre sus elementos individuales, lo que resulta en la salida deseada.