2016-12-08 2 views
1

Ich mag die Zahlen speichern froms 11 bis 15 mit dem Zuwachs von 1 und ich habe den folgenden Code:drucken Zahlen in Python

import numpy as np 
for b in range(11,15,1): 
    np.savetxt('tmp.txt',np.c_[b],fmt='%1.3f') 

Aber ich bin in der Lage nur eine Nummer zu speichern, die 14. Hilfe ist ich dafür.

+0

np.savetxt ('tmp.txt', np.c_ [11:14], fmt = '% 1.3f') –

+1

Das liegt daran, dass Sie den alten Wert in der Datei überschreiben. Welches Format möchten Sie in einer Datei speichern? eine Nummer pro Zeile? – ArunDhaJ

Antwort

0

Sie ersetzen die Datei 'tmp.txt' in jeder Iteration der Schleife. Stattdessen können Sie eine Datei im Append-Modus öffnen und dann auf sie schreiben die gleiche Funktion:

import numpy as np 
f=open('tmp.txt','ab') 
for b in range(11,15,1): 
    np.savetxt(f,np.c_[b],fmt='%1.3f') 
f.close() 
+0

Jedes Mal in der Datei speichert es die Nummern. Es sollte die Nummer im nächsten Lauf ersetzen. Eine weitere Sache, dass ich das Array außerhalb der Schleife möchte, und ist es dann möglich, zu speichern? –

+0

Ich verstehe nicht ... –

0

Ich nehme an, Sie eine Nummer pro Zeile haben wollen. Dies würde funktionieren:

import numpy as np 
np.savetxt('tmp.txt', np.arange(11,16,1), fmt='%1.3f') 

@Ni ist richtig, Ihre Lösung funktioniert nicht, weil „die Datei‚tmp.txt‘in jeder Iteration der Schleife ersetzen“.

Die savetxt-Methode von Numpy verwendet ein Array und speichert es in einer Datei. Jedes Element in einer separaten Zeile (standardmäßig). Keine Notwendigkeit für Iterationen. Siehe the docs.

In Bezug auf die Bereichsmethode. Numpys arange-Methode generiert in Ihrem Fall Werte innerhalb des halboffenen Intervalls [11, 15]. Das sollte erklären, warum Sie 16 anstelle von 15 einfügen müssen. Schauen Sie sich nochmal the docs an.