Использование 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))