44 votes

Enregistrement du tableau numpy dans le fichier txt par ligne

J'ai un tableau numpy de forme

 a = [1,2,3]

que je veux enregistrer dans un fichier .txt tel que le fichier ressemble à :

 1 2 3

Si j'utilise numpy.savetxt, j'obtiens un fichier comme :

 1
2
3

Il devrait y avoir une solution facile à cela, je suppose, des suggestions?

51voto

Avaris Points 11815

Si numpy >= 1.5 , vous pouvez faire :

# notez que le nom du fichier est entouré de guillemets doubles, # exemple "nom_fichier.txt"

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

Éditer

plusieurs tableaux 1D de même longueur

 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

plusieurs tableaux 1D de longueur 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

22voto

Hooked Points 16345

Une autre réponse consiste à remodeler le tableau afin qu'il ait des dimensions (1, N) comme ceci :

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

9voto

BioGeek Points 3724
import numpy
a = numpy.array([1,2,3])

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

3voto

omegamanda Points 318

J'ai trouvé que la première solution dans la réponse acceptée était problématique pour les cas où le caractère de nouvelle ligne est toujours requis. La solution la plus simple au problème était de faire ceci:

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

2voto

Innis Points 21
import numpy as np

a = [1,2,3]    
b = np.array(a).reshape((1,3))    
np.savetxt('a.txt',b,fmt='%d')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X