2017-11-03 1 views
1

Ich möchte Schleife so etwas wie dies in einem tun:Wie speichert man das Array iterativ in eine Datei in Python?

for i in range(n): 
    x = vector() 
    np.savetxt('t.txt', x, newline=" ") 

aber ich möchte x als neue Zeile in meiner Datei jedes Array speichern, aber das mit dem obigen Code nicht geschieht, kann jeder Hilfe? Vielen Dank!

+0

Wie wäre es mit 'newline =" \ n "', was gemäß der [Dokumentation] (https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.savetxt .html) ist standardmäßig eingestellt? –

+0

_ "... aber das passiert nicht mit dem obigen Code" _ Was ist das Problem mit dem Code? Was * passiert *? –

Antwort

0

ich für etwas gehen würde, wie (nicht getestet!):

for i in range(n): 
    x = vector() 
    with open("t.txt", "a") as f: # "a" for append! 
     f.write(np.array_str(x)) 

Es gibt einige Entscheidungen zu treffen:

  • Öffnen/Schließen der Datei in jeder Iteration gegen die Datei-Handler halten offen
  • mit np.array_str/np.array_repr/np.array2string

Diese von Natürlich ist basierend auf der Annahme, dass Sie nicht warten können, um alle Daten zu ergreifen, bevor Sie alle auf einmal schreiben! (Online-Einstellung)

1

Try this:

with open('t.txt', 'w') as f: 
    for i in range(n): 
     x = vector() 
     np.savetxt(f, x, newline=" ") 
     f.write('\n') 

Das heißt, passieren eine bereits geöffnete Datei Handle auf die numpy ‚s savetxt Funktion. Auf diese Weise werden vorhandene Inhalte nicht überschrieben. Siehe auch Append element to binary file

+0

@Rael kann diese Antwort akzeptieren, wenn es Ihr Problem gelöst hat. –

Verwandte Themen