2013-04-22 2 views
5

numpy配列の要素をFractionモジュールの入力として使用しようとしましたが、次のエラーが発生します。"TypeError:両方の引数がRationalインスタンスである必要があります"例えばPythonの分数モジュールでnumpyベクトル要素を使用

私がしなければ、:

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

そして:

a = Fraction(58,X) 

を私は同じエラーを取得します。私はまた、X=X.astype('int')、またはX=X.astype('int32')を成功させようとしました。

分数モジュールに必要な「Rationalインスタンス」でnumpy配列を変換するにはどうすればよいですか?

+0

は、エラーを再現することはできません。私にとってうまく動作します – YXD

+0

@MrE:私のためにも動作しますが、32ビットNumPy/Pythonで同様のエラーが発生しています。 –

+0

私はアイドル状態の64ビットのNumpy/Pythonをウィンドウで実行しています。 –

答えて

5

これはnumpyの整数は、Pythonの抽象クラスとの対話(とdtype='int'np.int32またはnp.int64のいずれかを意味するので、それは、また、あなたが32ビットまたは64ビットのPythonを実行するかどうかに依存だ道の不幸な成果物の一つであると思われます、決してPython int)。明示的にPythonのintに変換

は動作するはずです:

Fraction(58, int(X)) 
+0

ありがとう、それは働いた! –

+0

numpyの整数を使用する価値はありますか?それとも、私のベクトルを単に** Y = [7,1] **と定義する必要がありますか? –

+1

@gabriel_papaiz:整数にNumPy機能(ベクター演算など)を使用するかどうかによって異なります。 –