2016-03-24 5 views
3

So habe ich ein Array namens final, das in Text mit einer Kopfzeile gespeichert wird. Das Array wird mit numpy.column_stack wie folgt aufgebaut:Numpy Savetxt exportiert kein Trennzeichen, wenn fmt für jede Spalte definiert wird

numpy.column_stack((SampNo, dummy, data, data1)) 

Als ich

numpy.savetxt(f, final, delimiter=',', fmt='%1.7f') 

Die Textdatei wird mit dem Begrenzer korrekt gespeichert. Ich brauche aber die ersten beiden Spalten Zeichenfolge zu sein, anstatt float, und wenn ich benutze:

numpy.savetxt(f, final, delimiter=',', fmt='%s %s %1.7f %1.7f') 

... das Komma als Trennzeichen wird nicht mehr in der Datei.

Auch, als eine Seite, ich am Ende mit %1.7f 8 Mal nach den zwei %s Optionen, da es insgesamt 10 Spalten sind. Gibt es einen besseren Weg, dies zu tun?

Antwort

2

Vom np.savetxt docstring:

fmt : str or sequence of strs, optional 
    A single format (%10.5f), a sequence of formats, or a 
    multi-format string, e.g. 'Iteration %d -- %10.5f', in which 
    case `delimiter` is ignored. 

Sie müssen manuell das Trennzeichen in Ihrem Format angeben, ob Sie den Multi-Format-String-Ansatz.

Um Ihre Seite, können Sie die Zeichenfolge multiplizieren einige Ausschneiden und Einfügen zu vermeiden:

für Ihre Hilfe
In [5]: "%s,%s" + ",%1.7f"*8 
Out[5]: '%s,%s,%1.7f,%1.7f,%1.7f,%1.7f,%1.7f,%1.7f,%1.7f,%1.7f' 
+0

Das funktionierte perfekt, danke! – stezzle90

Verwandte Themen