I'm trying to use elements from a numpy array as an input for the Fraction module and I'm getting the following error: "TypeError: both arguments should be Rational instances"

For example, if I do:

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

And then:

a = Fraction(58,X)  

I'll get the same error. I also tried to do X=X.astype('int'), or X=X.astype('int32'), without success.

What do I have to do to convert the numpy array in a "Rational instance" that is needed for Fraction module?

有帮助吗?

解决方案

This seems to be one of the unfortunate artifacts of the way Numpy integers interact with Python's abstract classes (and it's also dependent on whether you run a 32-bit or 64-bit Python, because dtype='int' means either np.int32 or np.int64, but never Python int).

Explicitly converting to Python int should work:

Fraction(58, int(X))
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top