wake-up-neo.com

Numpy-Array wird zeilenweise in einer TXT-Datei gespeichert

Ich habe ein numpy Array von Form

a = [1,2,3]

die ich in einer .txt-Datei speichern möchte, so dass die Datei wie folgt aussieht:

1 2 3

Wenn ich numpy.savetxt verwende, erhalte ich eine Datei wie:

1
2
3

Ich denke, es sollte eine einfache Lösung geben, irgendwelche Vorschläge? 

30
Palle

Wenn numpy >= 1.5, können Sie Folgendes tun: 

# Beachten Sie, dass der Dateiname in doppelte Anführungszeichen gesetzt wird.
# beispiel "dateiname.txt"

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

Bearbeiten

mehrere 1D-Arrays mit gleicher Länge

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

mehrere 1D-Arrays mit variabler Länge

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
37
Avaris

Eine alternative Antwort besteht darin, das Array so umzuformen, dass es die Abmessungen (1, N) wie folgt hat:

savetext(filename, a.reshape(1, a.shape[0]))
15
Hooked
import numpy
a = numpy.array([1,2,3])

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

Ich fand, dass die erste Lösung in der akzeptierten Antwort problematisch für Fälle ist, in denen der Newline-Charakter noch benötigt wird. Die einfachste Lösung für das Problem war folgendes:

numpy.savetxt(filename, [a], delimiter='\t')
2
omegamanda
import numpy as np

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

Ich weiß, das ist alt, aber keine dieser Antworten löste das Grundproblem, dass numpy das Array nicht zeilenweise speichert. Ich habe festgestellt, dass dieser Liner den Trick für mich gemacht hat:

b = np.matrix(a)
np.savetxt("file", b)
1
cdamayor

Sehr einfach: [1,2,3]

Eine Liste ist wie eine Spalte. 

1
2
3

Wenn Sie eine Liste wie eine Reihe wünschen, doppelte Corchete:

[[1, 2, 3]]  --->    1, 2, 3

und

[[1, 2, 3], [4, 5, 6]]  ---> 1, 2, 3
                             4, 5, 6

Endlich:

np.savetxt("file", [['r1c1', 'r1c2'], ['r2c1', 'r2c2']], delimiter=';', fmt='%s')

Beachten Sie, dass das Komma zwischen den eckigen Klammern und der inneren Liste Elemente der äußeren Liste sind

0
McKinley

Die numpy.savetxt() -Methode hat mehrere Parameter, die es wert sind, zur Kenntnis genommen zu werden:

fmt: str oder eine Folge von Strs, optional
Dient zum Formatieren der Zahlen im Array. Einzelheiten zum Formatieren finden Sie im Dokument

trennzeichen: str, optional
Zeichenfolge oder Zeichen, die Spalten trennen

zeilenumbruch: str, optional
Trennlinien zwischen Zeichen oder Strings.

Nehmen wir ein Beispiel. Ich habe ein Array der Größe (M, N), der aus ganzen Zahlen im Bereich (0, 255) besteht. Um das Array zeilenweise zu speichern und es gut darzustellen, können wir den folgenden Code verwenden:

import numpy as np

np.savetxt("my_array.txt", my_array, fmt="%4d", delimiter=",", newline="\n")
0
jdhao