Python-it.org forum # share your knowledge! ;)
Settembre 08, 2010, 21:29 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizie: fusione python.it e python-it.org: http://www.python-it.org/forum/index.php?topic=2347.0
 
   Home   Guida Regolamento Ricerca Accedi Registrati Python-it.org Doc Chat  
Apri il forum in una pagina a parte - È possibile fornire/richiedere supporto anche presso i canali IRC #python su Azzurra e #python.it su Freenode

Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: problema con modulo numpy  (Letto 100 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
FANG
python unicellularis
*

Livello reputazione: 0
FANG non ha alcuna influenza
Scollegato Scollegato

Messaggi: 42


Mostra profilo
« inserito:: Luglio 29, 2010, 12:07 »

Ciao a tutti,

ho un file di testo su due colonne:

%GIORNO          VALORE
150.9965278    -164781.423
150.9930556    -164781.035
150.9895833    -164780.714
150.9861111    -164780.419


Siccome lo devo elaborare ho pensato di leggere il file con il seguente codice:

Codice:
import numpy
dati=numpy.loadtxt(dir+nomefile)
doy=dati[:,0]
clk=dati[:,1]

però il programma mi restituisce il seguente errore:

C:\Python26\lib\site-packages\numpy\lib\io.py in loadtxt(fname=dir+nomefile, dtype=dtype('float64'), comments='#', delimiter=None, converters=[<type 'float'>, <type 'float'>], skiprows=0, usecols=None, unpack=False)
  628
  629             # Convert each value according to its column and store
  630             X.append(tuple([conv(val) for (conv, val) in zip(converters, vals)]))
  631     finally:
  632         if isstring:
X = [], X.append = <built-in method append of list object>, builtin tuple = <type 'tuple'>, conv = <type 'float'>, val = '%GIORNO', builtin zip = <built-in function zip>, converters = [<type 'float'>, <type 'float'>], vals = ['%GIORNO', 'VALORE']

<type 'exceptions.ValueError'>: invalid literal for float(): %GIORNO
args = ('invalid literal for float(): %GIORNO',)
message = 'invalid literal for float(): %GIORNO'

Qualche idea?
Registrato
Python-it.org forum
« inserito:: Luglio 29, 2010, 12:07 »

 Registrato
imbuto
python erectus
***

Livello reputazione: 0
imbuto non ha alcuna influenza
Scollegato Scollegato

Messaggi: 135


Mostra profilo
« Risposta #1 inserito:: Luglio 29, 2010, 12:40 »

dati=numpy.loadtxt(dir+nomefile, skiprows=1)
Registrato
FANG
python unicellularis
*

Livello reputazione: 0
FANG non ha alcuna influenza
Scollegato Scollegato

Messaggi: 42


Mostra profilo
« Risposta #2 inserito:: Luglio 29, 2010, 13:42 »

Grazie, risolta!

ho ancora una domanda! devo salvare dei dati su un file secondo questa struttura:

%GIORNO          VALORE
150.9756944      0.0709395731177
150.9722222      0.0856709431315
150.96875      0.0724023131217
150.9652778      0.0321336830842
150.9618056      0.0188650530744

Come noti al terzo valore non mi scrive gli zeri finali e mi viene tutto sfasato. Esiste un modo per formattarli meglio?

grazie
Registrato
Bakuriu
python sapiens sapiens
******

Livello reputazione: 0
Bakuriu non ha alcuna influenza
Scollegato Scollegato

Messaggi: 1280

Katon, Goukakyuu no jutsu!


Mostra profilo
« Risposta #3 inserito:: Luglio 30, 2010, 10:03 »

Con numpy non so(non lo conosco per niente...), però non penso sia così difficile creare una funzioncina che apra il file, legga i dati e li riscriva con il giusto numero di cifre.
Potresti usare il formattamento con '%.numero-cifre-decimalif', oppure str.rjust o altro.

È possibile che possa farlo direttamente numpy però, quindi prima leggiti bene le doc.
Registrato

Citazione
Atlantide è sprofondata nell'oceano quando Chuck Norris rispose:"solo 5" alla domanda "Quanti sono i continenti?"
imbuto
python erectus
***

Livello reputazione: 0
imbuto non ha alcuna influenza
Scollegato Scollegato

Messaggi: 135


Mostra profilo
« Risposta #4 inserito:: Luglio 30, 2010, 13:08 »

Come descritto nella documentazione, numpy.savetxt accetta un parametro "fmt" per controllare il formato.
L'header deve essere scritto a parte.

f=open('test.txt', 'w')
f.write('%GIORNO          VALORE\n')
numpy.savetxt(f, data, fmt=('%.7f', '%.13f'))

Codice:
%GIORNO          VALORE
150.9756944 0.0709395731177
150.9722222 0.0856709431315
150.9687500 0.0724023131217
150.9652778 0.0321336830842
150.9618056 0.0188650530744
« Ultima modifica: Luglio 30, 2010, 13:10 da imbuto » Registrato
Python-it.org forum
   

 Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC XHTML 1.0 valido! CSS valido!