2013-04-22 10 views
5

Próbuję użyć elementów z tablicy numpy jako wejścia dla modułu Fraction i pojawia się następujący błąd: "TypeError: oba argumenty powinny być instancjami Rational"Używanie numpy elementów wektorowych w module Fraction w Pythonie

na przykład, jeśli mam zrobić:

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

, a następnie:

a = Fraction(58,X) 

Wezmę ten sam błąd. Próbowałem również wykonać X=X.astype('int') lub X=X.astype('int32'), bez powodzenia.

Co muszę zrobić, aby przekonwertować tablicę numpy w "instancji Rational" potrzebnej dla modułu Fraction?

+0

Nie można odtworzyć błędu. Działa dobrze dla mnie – YXD

+0

@MrE: działa również dla mnie, ale widziałem podobne niepowodzenia w 32-bitowym NumPy/Pythonie. –

+0

Używam idle 64-bit Numpy/Python działa w oknach przy okazji. –

Odpowiedz

5

To wydaje się być jednym z niefortunnych artefaktów drodze całkowitymi NumPy interakcji z klas abstrakcyjnych Pythona (i to również zależy od tego, czy uruchomić 32-bitową lub 64-bitową Python, ponieważ dtype='int' oznacza albo np.int32 lub np.int64, ale nigdy Python int).

Jawnie konwersji do Python int powinno działać:

Fraction(58, int(X)) 
+0

Wielkie dzięki, zadziałało !! –

+0

Czy warto używać numpy liczb całkowitych? Czy powinienem po prostu zdefiniować mój wektor jako ** Y = [7,1] **? –

+1

@gabriel_papaiz: zależy od tego, czy chcesz używać funkcji NumPy (np. Operacji wektorowych) z liczbami całkowitymi. –

Powiązane problemy