В Python есть функция для сокращения дробей?
Заголовок: Как получить дробный результат деления в виде дроби в Python или Numpy?
Тело вопроса:
Я столкнулся с проблемой при выполнении деления чисел в Python. Например, когда я вычисляю 98/42
, мне хотелось бы получить результат в виде дроби 7/3
, а не в десятичном формате 2.3333333
.
Есть ли функция в Python или библиотеке Numpy, которая позволяет мне получить результат в виде дроби? Заранее благодарю за помощь!
2 ответ(ов)
Дополнение к ответу Джона:
Чтобы получить упрощённую дробь из десятичного числа (например, 2.0372856077554062)
Использование класса Fraction
даёт следующий результат:
Fraction(2.0372856077554062)
#> Fraction(4587559351967261, 2251799813685248)
Чтобы получить упрощённый ответ:
Fraction(2.0372856077554062).limit_denominator()
#> Fraction(2732, 1341)
Такой подход позволит вам получить более удобный вид дроби, которая близка к исходному десятичному числу.
Чтобы использовать gcd
из модуля math
для упрощения дроби, вы можете воспользоваться следующим примером. Функция simplify_fraction
принимает числитель и знаменатель, и приводит дробь к простейшему виду:
import math
def simplify_fraction(numerator, denominator):
# Если НСД равен знаменателю, это означает, что числитель делится на знаменатель
if math.gcd(numerator, denominator) == denominator:
return int(numerator / denominator)
# Если НСД равен 1, дробь уже находится в простейшем виде
elif math.gcd(numerator, denominator) == 1:
return str(numerator) + "/" + str(denominator)
else:
# Упрощение дроби путем деления числителя и знаменателя на их НСД
top = numerator / math.gcd(numerator, denominator)
bottom = denominator / math.gcd(numerator, denominator)
return str(top) + "/" + str(bottom)
Объяснение работы кода:
- Импорт модуля: В начале мы импортируем модуль
math
, который содержит функциюgcd
(наибольший общий делитель). - Проверка на целое число: Есличислитель делится на знаменатель без остатка (то есть НСД равен знаменателю), возвращаем целое число.
- Проверка на простую дробь: Если НСД равен 1, дробь уже упрощена, и мы возвращаем её в строковом формате, например, "3/4".
- Упрощение дроби: В противном случае мы вычисляем верхнюю и нижнюю части дроби, деля их на НСД, и возвращаем результат в виде строки.
Вы можете вызывать эту функцию с любыми значениями числителя и знаменателя, чтобы получить упрощённый вид дроби.
Как получить доступ к i-му столбцу многомерного массива NumPy?
Наиболее эффективный способ применения функции к массиву NumPy
Как создать тестовые и обучающие выборки из одного DataFrame с помощью pandas?
Индексация массива numpy с помощью списка кортежей
TensorFlow Python: Доступ к отдельным элементам в тензоре