Forum
>>
Programmazione Python
>>
Files e Directory
>>
Scrittura valori array su colonne da un ciclo
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da RFrances33 |
2016-08-18 22:45:12 - Scrittura valori array su colonne da un ciclo
|
Buonasera a tutti. Ho provato a risolvere il mio problema cercando in internet, ma essendo molto niubba non sono riuscita a venire a capo del problema.
Sto scrivendo un programma che simula 10000 volte 450 misure. q=10000 m=450 #CICLO DI SIMULAZIONE for i in range(0,q): a=np.random.normal(muT,sigmanc,m) s=a np.savetxt('datisim.dat',s, delimiter=" ") Io vorrei scrivere i vari valori presenti nell'array a, che sono 450, in 10000 colonne( che equivale al termine del ciclo). Se lascio così il codice penso mi sovrascriva sempre i vari array, mentre a me servirebbero affiancati su colonne diverse. Vi ringrazio infinitamente per la disponibilità. |
|
Scritto da Daniele aka Palmux |
2016-08-18 23:26:45 - Re: Scrittura valori array su colonne da un ciclo
|
Fammi capire bene il problema, perché mi sfugge cosa vuoi ottenere, posta magari anche il resto del codice ricordandoti di utilizzare il tasto per il corretto allineamento della sintassi.
Comunque sia se ho vagamente capito (ma sono sicuro di no), non puoi risolvere tutto con una lista? Array è un termine in Python che ha un senso relativo (invece ha molto senso in numpy), ma se la tua paura è di sovrascrivere ad ogni passaggio l'oggetto, ti basterà utilizzare il metodo append e passa la paura. A presto. Cya |
|
Scritto da RFrances33 |
2016-08-18 23:33:21 - Re: Scrittura valori array su colonne da un ciclo
|
sigmanc=input('Inserisci sigmanc') #Devo simulare q volte 450 misure di pendolo outfile_9=open('stimesim.dat', 'w') outfile_9.write('numero media varianzanc\n') outfile_10=open('datisim.dat', 'w') q=10000 m=450 #CICLO DI SIMULAZIONE for i in range(0,q): a=np.random.normal(muT,sigmanc,m) s=a outfile_9.write(('%f %f\n')%(i,j)) musim=sum(s)/m #print i differenzesim=[(j-musim)**2 for j in s ] varncsim=sum(differenzesim)/m #print musim, varncsim outfile_9.write(('%f %f %f\n')%(i,musim,varncsim)) outfile_9.close() ni,musim,varncsim=np.loadtxt('stimesim.dat',skiprows=1,usecols=(0,1,2),unpack=True) #print len(mu) #print len(varnc) mediamedia=sum(musim)/len(musim) #media delle medie mediavar=sum(varncsim)/len(varncsim) #Media delle varianze differenzesim2=[(k-mediamedia)**2 for k in musim] varianzamedia=(sum(differenzesim2))/(len(musim)*(len(musim)-1)) #Varianza della media sigmamedia=math.sqrt(varianzamedia) print 'La media delle medie e', mediamedia print 'La media delle varianze e', mediavar print 'La varianza della media e', varianzamedia print 'La deviazione standard della media e', sigmamedia print 'Test di Pearson per i dati della simulazione', #istogrammi num_binsmu=70 ns, binssim, patches=plt.hist(musim,num_binsmu,normed=0) #bins=Estremo destro plt.xlabel('Valore') plt.ylabel('Frequenza') plt.title("Medie") plt.show() num_binsvar=65 ns2, binssim2, patches=plt.hist(varncsim,num_binsvar,normed=0) #bins=Estremo destro plt.xlabel('Valore') plt.ylabel('Frequenza') plt.title("Varianze") plt.show() Questo è il mio programma simulazione. Il suo compito è quello di andare a simulare q=10000 volte un set di m=450 misure.
Io vorrei avere incolonnati separatamente tutti questi set di 450 misure, perchè poi dovrò utilizzarli singolarmente per andare a calcolarmi delle variabili di chi quadro, per applicare il Test di Pearson... E' un programma per l'esame di statistica. Non so se così è più chiaro. L'obiettivo sarebbe quello di prelevare con un ciclo sulle colonne i valori delle singole colonne per andare a calcolare quelle variabili. |
|
Scritto da RFrances33 |
2016-08-18 23:39:37 - Re: Scrittura valori array su colonne da un ciclo
|
P.S.
L'idea sarebbe simile a quello che fa questo codice. Ho messo in questo caso q=10 per lavorare più velocemente come prova. for i in range(0,q): a=np.random.normal(muT,sigmanc,m) s=a for j in s: outfile_10.write(('%f %f\n')%(i,j))Solamente che questo ciclo mi dà il valori che io voglio uno sotto l'altro. (Vedi file allegato), mentre io vorrei che, ad esempio, la colonna relativa a i=1 sia di fianco a quella i=0 Grazie. Francesca |
|
Scritto da Daniele aka Palmux |
2016-08-20 13:38:11 - Re: Scrittura valori array su colonne da un ciclo
|
Ciao Francesca, facciamo un semplicissimo esempio. Usando numpy genero tre diversi array molto molto semplici:
>>> arrA = np.array([1,2,3]) array([1, 2, 3]) >>> arrB = np.array([4,5,6]) array([4, 5, 6]) >>> arrC = np.array([7,8,9])) array([7, 8, 9])Ora questi array li voglio mettere in un singolo file, ma in colonne: >>> output = np.column_stack((arrA.flatten(),arrB.flatten(),arrC.flatten())) >>> np.savetxt('datisim.dat ',output,delimiter=',') >>> cat datisim.dat 1.000000000000000000e+00,4.000000000000000000e+00,7.000000000000000000e+00 2.000000000000000000e+00,5.000000000000000000e+00,8.000000000000000000e+00 3.000000000000000000e+00,6.000000000000000000e+00,9.000000000000000000e+00Ci siamo, è quello che cerchi o perlomeno siamo sulla strada giusta? Cya |
Pagina: 1
Esegui il login per scrivere una risposta.