2013-04-22 68 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'),但没有成功。

我有什么做的numpy的数组转换中所需要的分数模块“理性实例”?

+0

无法重现错误。对我来说工作得很好 – YXD 2013-04-22 12:59:41

+0

@MrE:也适用于我,但我发现32位NumPy/Python也出现了类似的错误。 – 2013-04-22 13:00:14

+0

顺便说一下,我在窗口中使用闲置的64位Numpy/Python。 – 2013-04-22 13:07:39

回答

5

这似乎是的方式numpy的整数与Python的抽象类互动不幸的文物之一(它也依赖于您是否运行32位或64位的Python,因为dtype='int'意味着要么np.int32np.int64,但从来没有Python int)。

显式转换到Python int应该工作:

Fraction(58, int(X)) 
+0

非常感谢,它工作! – 2013-04-22 13:10:13

+0

然后使用numpy整数值得吗?或者我应该简单地将我的向量定义为** Y = [7,1] **? – 2013-04-22 13:13:30

+1

@gabriel_papaiz:取决于你是否想与你的整数使用NumPy的功能(例如向量操作)。 – 2013-04-22 13:32:44

相关问题