2013-06-05 8 views
8

Sto usando il metodo sceary pearsonr (x, y) e non riesco a capire perché questo errore si sta verificando. Calcola i primi due (eseguo diverse migliaia di questi test in un ciclo) e poi muore. Qualcuno ha qualche idea su quale potrebbe essere il problema?Cosa significa questo errore: ValueError: mismatch di forma: gli oggetti non possono essere trasmessi a una singola forma?

r_num = n*(np.add.reduce(xm*ym)) 

Questa è la linea nel metodo pearsonr che l'errore si verifica, qualsiasi aiuto sarebbe molto apprezzato grazie!

risposta

11

Questo particolare errore implica che una delle variabili utilizzate nell'aritmetica sulla linea abbia una forma incompatibile con un'altra sulla stessa linea (vale a dire, sia diversa che non scalare). Poiché n e l'output di np.add.reduce() sono entrambi scalari, ciò implica che il problema si trova con xm e ym, i due dei quali sono semplicemente gli input xey meno i rispettivi mezzi.

In base a questo, la mia ipotesi è che i tuoi ingressi xey abbiano forme diverse l'una dall'altra, rendendole incompatibili per la moltiplicazione di elementi.

** Tecnicamente, non è che le variabili sulla stessa riga abbiano forme incompatibili. L'unico problema è quando due variabili che vengono aggiunte, moltiplicate, ecc. Hanno forme incompatibili, indipendentemente dal fatto che le variabili siano temporanee (ad es. Output di funzioni) o meno. Due variabili con forme diverse sulla stessa linea vanno bene finché qualcos'altro corregge il problema prima che l'espressione matematica venga valutata.

Problemi correlati