2012-03-05 13 views
21

Tengo una matriz de forma numpyAhorro gama numpy a txt fila archivo sabia

a = [1,2,3] 

que quiero guardar en un archivo .txt de tal manera que el archivo se ve así:

1 2 3 

Si yo uso numpy.savetxt entonces consigo un archivo como:

1 
2 
3 

debe haber una solución fácil a este supongo, alguna sugerencia?

+1

¿O solo se trata de matrices 1D? –

Respuesta

25

Si numpy >= 1.5, que puede hacer:

# note that the filename is enclosed with double quotes,
# example "filename.txt"

numpy.savetxt("filename", a, newline=" ") 

Editar

varias matrices con 1D misma longitud

a = numpy.array([1,2,3]) 
b = numpy.array([4,5,6]) 
numpy.savetxt(filename, (a,b), fmt="%d") 

# gives: 
# 1 2 3 
# 4 5 6 

varios 1D matrices con longitud variable

a = numpy.array([1,2,3]) 
b = numpy.array([4,5]) 

with open(filename,"w") as f: 
    f.write("\n".join(" ".join(map(str, x)) for x in (a,b))) 

# gives: 
# 1 2 3 
# 4 5 
+0

¿Qué sucede si se va a agregar una nueva matriz idéntica al archivo en la siguiente fila? ¿Cómo romper la línea de primera línea y continuar en la segunda línea? – Palle

+1

@PatrikT: si tiene más de una matriz 1D, puede hacer 'numpy.savetxt (filename, (a, b, c))'. Ahorra fila sabio Pero deberían tener el mismo tamaño. – Avaris

+0

¿Qué pasa si p. a es más corto que byc? ¿Cómo guardo estas 3 matrices sabiamente? – Palle

-1

simplemente

' '.join(a) 

y escribir esta salida a un archivo.

+3

Eso dará un 'TypeError: secuencia elemento 0: cadena esperada, numpy.int32 found', por lo que primero debe convertir a cadena antes de unirse. – BioGeek

+0

'' .join (str (x) para x en a) –

5
import numpy 
a = numpy.array([1,2,3]) 

with open(r'test.txt', 'w') as f: 
    f.write(" ".join(map(str, a))) 
11

una respuesta alternativa es remodelar la matriz de modo que tenga dimensiones (1, N) así:

savetext(filename, a.reshape(1, a.shape[0])) 
1

he encontrado que el primera solución en la respuesta aceptada a ser problemático para los casos donde el carácter de nueva línea aún se requiere. La solución más fácil al problema fue hacer esto:

numpy.savetxt(filename, [a], delimiter='\t')