2013-04-22 17 views
5

Sto cercando di utilizzare elementi da un array numpy come input per il modulo Fraction e viene visualizzato il seguente errore: "TypeError: entrambi gli argomenti devono essere istanze Rational"Utilizzo di elementi vettoriali numpy nel modulo Fraction in Python

Per esempio, se faccio:

Y = np.array([7,1], dtype='int64') 
X = Y[0]*3+Y[1] 

E poi:

a = Fraction(58,X) 

prendo lo stesso errore. Ho anche provato a fare X=X.astype('int'), o X=X.astype('int32'), senza successo.

Cosa devo fare per convertire l'array numpy in una "istanza Rational" necessaria per il modulo Fraction?

+0

non possono riprodurre l'errore. Funziona bene per me – YXD

+0

@MrE: funziona anche per me, ma ho visto fallimenti simili con NumPy/Python a 32 bit. –

+0

Io uso idle 64-bit Numpy/Python in esecuzione in Windows a proposito. –

risposta

5

Questa sembra essere una delle sfortunate manufatti del modo in cui interi NumPy interagiscono con le classi astratte di Python (ed è anche dipende dal fatto che si esegue un Python a 32-bit o 64-bit, perché dtype='int' significa sia np.int32 o np.int64, ma mai Python int).

esplicitamente la conversione in Python int dovrebbe funzionare:

Fraction(58, int(X)) 
+0

Grazie mille, ha funzionato !! –

+0

Allora è degno di usare numeri interi numpici? O dovrei semplicemente definire il mio vettore come ** Y = [7,1] **? –

+1

@gabriel_papaiz: dipende se si desidera utilizzare la funzionalità NumPy (ad esempio operazioni vettoriali) con i propri numeri interi. –

Problemi correlati