Использование numy векторных элементов в модуле Fraction в Python

Я пытаюсь использовать элементы из массива NumPy в качестве входа для Fraction модуль и я получаю следующую ошибку: "TypeError: оба аргумента должны быть экземплярами Rational"

Например, если я делаю:

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 в "Rational instance", который необходим для модуля Fraction?

1 ответ

Решение

Похоже, это один из неудачных артефактов взаимодействия целых чисел Numpy с абстрактными классами Python (и это также зависит от того, запускаете ли вы 32-битный или 64-битный Python, потому что dtype='int' означает либо np.int32 или же np.int64но никогда не питон int).

Явное преобразование в Python int должно сработать:

Fraction(58, int(X))
Другие вопросы по тегам