Forum
>>
Principianti
>>
Numero di righe e colonne in matrice
Pagina: 1 2 Avanti
Esegui il login per scrivere una risposta.
Scritto da Giorgio V |
2016-06-01 19:22:20 - Numero di righe e colonne in matrice
|
Ciao a tutti, sono un Medico che da un po' di tempo usa Python nel proprio lavoro...
lo so che vi presento un problema banale ma non riesco a risolverlo. Ho importato una matrice bidimensionale (con numpy.loadtxt...), e devo contare le righe e le colonne... Sto impazzendo per trovare come fare... Davvero, ho cercato ovunque... Sto facendo giri assurdi... Grazie... |
|
Scritto da Daniele aka Palmux |
2016-06-02 12:40:11 - Re: Numero di righe e colonne in matrice
|
Ciao Giorgio, posta il codice e la matrice ottenuta, così facciamo un ragionamento concreto con quanto hai ottenuto e quanto vorresti ottenere.
Ciao. Daniele |
|
Scritto da Giorgio V |
2016-06-02 14:44:00 - Re: Numero di righe e colonne in matrice
|
Ecco il codice:
Carica le matrici A e B che sono in rapporto tra loro: il numero di righe di B sarà il numero di colonne della nuova matrice Eadi dopo aver trattato la matrice A. Genero la matrice Eadi ed elimino le righe di troppo di soli 0 in fondo. Questa funzione calcoli è poi inserita all'interno di una interfaccia grafica per valutare ogni singola colonna della matrice Eadi (plot dei punti) e decidere se tenerla o eliminarla. Effettuare alcuni calcoli sulle colonne e alla fine salvare il tutto in un db SQLite. Le occasioni per contare il numero di righe e colonne sono molti e avere una funzione che lo fa sarebbe utile. Per es il size di Matlab restituisce il numero di righe e colonne... Spero di essere stato chiaro def Calcoli() ### Carico le matrici (poi il path sarà sostituito con :filedialog.askdirectory() path = "/Users/giorgio/Documents/Python/Progetti/PI Index/Dati/Prova Nava" A = np.loadtxt(path + "/001_ServoCurveData 0000.nta", comments="%", usecols=(3, 4, 5, 6)) B = np.loadtxt(path + "/001_TrendTidalVolume 0000.nta", comments="%", usecols=(3, 4)) ### Calcolo le righe indirettamente come numero_totale_di_elementi/colonne righe = int(np.size(A) / 4) colonne = int(np.size(B) / 2) #le matrici A e B sono correlate Numero Dati = 200 Eadi = np.zeros([Numero Dati, colonne]) #genero una matrice di solo 0 che poi riempirò ### con questo ciclo uso la colonna 0 della matrice A (sequenza di 1 intervallati da 0) per separare i dati ### della colonna 3: Ogni sequenza di 1 continua genera una colonna nuova di dati ### nella matrice Eadi colonna = 0 riga = 0 incr = 1 for n in range(0, righe): if (A[n, 0] == 1) and (incr > 0): Eadi[riga, colonna] = A[n, 3] riga += 1 incr += 1 continue if incr > 1: colonna += 1 incr = 1 riga = 1 #### dalla matrice Eadi elimino le righe in fondo di soli zero for pulizia_righe in range(200, -1, 1): if np.max(Eadi[pulizia_righe, :]) == 0: Eadi[pulizia_righe, :] = [] Eadi = np.round(Eadi / 100, 1) #arrotondo i valori ## A questo punto devo sapere di quante righe è la matrice Eadi pulita. ### Posso mettere un contatatore sul ciclo for precedente e trovare per differenza ## ma se ho un comando che lo calcola è meglio |
|
Scritto da Daniele aka Palmux |
2016-06-02 15:28:04 - Re: Numero di righe e colonne in matrice
|
C'è qualche errorino di sintassi nel tuo codice e non posso vedere esattamente quello che vedi tu perché non ho il file di partenza.
A sensazione mi verrebbe da dirti che un semplice contatore (o più di uno) potrebbe fare al caso tuo e risolvere facilmente il problema. Cya |
|
Scritto da Giorgio V |
2016-06-02 15:39:17 - Re: Numero di righe e colonne in matrice
|
Certo non avendo le matrici di partenza è un casino seguire... Ma il tutto funziona.
Speravo in qualche funzione tipo (righe,colonne)= funzione(matrice) che mi restituisse il numero di righe e di colonne appunto... Ma tu cosa intendi per contatore? |
|
Scritto da Daniele aka Palmux |
2016-06-02 16:11:55 - Re: Numero di righe e colonne in matrice
|
Non lo metto in dubbio, vedevo solo dei piccoli errori di sintassi, come i due punti mancanti dopo la dichiarazione della funzione, il nome di qualche variabile composta da due distinti nomi (Numero Dati) cosa che ti darebbe un syntax error.
Ma l'oggetto restituito che cos'è? Fammi vedere il risultato. Intendo "qualcosa" che venga incrementato o decrementato seguendo l'andamento del tuo flusso di creazione. Esempio terra terra: >>> contatore = 0 >>> for n in range(10): [...] contatore += 1 >>> print(contatore) 10Cya |
|
Scritto da Giorgio V |
2016-06-02 16:42:24 - Re: Numero di righe e colonne in matrice
|
Per la sintassi i : non li ho copiati e i nomi doppi sono con underscore (che non mi ha preso per non so quale motivo)...
Ti allego il file dati.csv che è la matrice Eadi salvata ed è quello del quale dovrei conoscere il numero di righe e colonne (i dati sono float n.n separati da virgole) |
|
Scritto da Giorgio V |
2016-06-02 16:44:38 - Re: Numero di righe e colonne in matrice
|
se vuoi ti invio anche le due matricole di partenza...
|
|
Scritto da Giorgio V |
2016-06-02 16:45:09 - Re: Numero di righe e colonne in matrice
|
matricole = matrici... maledetto correttore!!!!
|
|
Scritto da Daniele aka Palmux |
2016-06-02 18:51:10 - Re: Numero di righe e colonne in matrice
|
Sì, mandami anche le matrici, così vedo esattamente l'oggetto restituito. Infatti mi sono spiegato male, intendevo che oggetto Python fosse, non tanto il risultato, quello interessa più a te.
Vado a sensazione, ma dove leggo for n in range(0, righe) non hai già il numero di righe spurie? Bene quando togli gli 0.0 col ciclo successivo, eliminalo anche dal numero totale ed hai quanto cerchi. Cya |
Pagina: 1 2 Avanti
Esegui il login per scrivere una risposta.