2013-06-11 6 views
12

Sto guardando lo numpy.savetxt e sono bloccato sull'opzione fmt.Impostazione dell'opzione fmt in numpy.savetxt

Ho provato a guardare here e anche il riferimento nel link sottostante tutte le lettere che possono essere utilizzate per l'opzione di ordinamento fmt mi danno un senso generale di ciò che sta accadendo.

Quello che non capisco è se è richiesto il simbolo % e in un esempio dato here come dovrei interpretare il numero 10.5? Se "f" riguarda l'impostazione del punto fluttuante, allora come mai è 10.5 (anche in questo caso, potrei non sapere come vengono impostati i punti in virgola mobile ...).

+0

il 10 e il 5 in% 10.5f sono descritti dai punti 4 e 5. nella documentazione per la prima volta collegati. – Jdog

+0

Sciocco me ... Grazie per quello! Non avevo capito che quei punti erano in realtà le risposte alla mia domanda finché non li hai indicati! Quindi il campo con in questo caso è solo [come qui] (https://sites.google.com/site/mrdelaneysweb/python-field-widths). È abbastanza pulito! –

risposta

30

È possibile utilizzare il parametro fmt in molti modi, ecco alcuni esempi.

import numpy as np 
a = np.array([[11,12,13,14], 
       [21,22,23,24]]) 

1) regolazione del punto di precisione floating: np.savetxt('tmp.txt',a, fmt='%1.3f')

11.000 12.000 13.000 14.000 
21.000 22.000 23.000 24.000 

2) Aggiunta di caratteri a destra giustificare.

con spazi: np.savetxt('tmp.txt',a, fmt='% 4d')

11 12 13 14 
    21 22 23 24 

Con zeri: np.savetxt('tmp.txt',a, fmt='%04d')

0011 0012 0013 0014 
0021 0022 0023 0024 

3) Aggiunta di caratteri a sinistra-giustificazione (uso di "-").

con spazi: np.savetxt('tmp.txt',a, fmt='%-4d')

11 12 13 14 
21 22 23 24 

È inoltre possibile utilizzare per scrivere le espressioni, come (si noti che il numero di voci nella espressione è lo stesso del numero di colonne nella matrice:

4) esempio generale: np.savetxt('tmp.txt',a, fmt='%1.1f + %1.1f/(%1.1f * %1.1f)')

11.0 + 12.0/(13.0 * 14.0) 
21.0 + 22.0/(23.0 * 24.0) 
1

Questo link potrebbe essere utile.

Dal link:

format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type] 
fill  ::= <any character> 
align  ::= "<" | ">" | "=" | "^" 
sign  ::= "+" | "-" | " " 
width  ::= integer 
precision ::= integer 
type  ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%" 

larghezza è un intero decimale che definisce l'ampiezza minima del campo. Se non specificato, la larghezza del campo sarà determinata dal contenuto.

Se non viene specificato alcun allineamento esplicito, il campo precedente della larghezza di un carattere zero ('0') abilita il riempimento dello zero sensibile al segno per i tipi numerici. Questo è equivalente a un carattere di riempimento di '0' con un tipo di allineamento di '='.

La precisione è un numero decimale che indica il numero di cifre deve essere visualizzata dopo il punto decimale di un valore in virgola mobile formattato con 'f' e 'F', o prima e dopo il punto decimale di un valore in virgola mobile formattato con 'g' o 'G'. Per i tipi non numerici, il campo indica la dimensione massima del campo - in altre parole, quanti caratteri verranno utilizzati dal contenuto del campo. La precisione non è consentita per i valori interi.