我怎样才能删除所有分数的分母
How can i remove the denominator of all the Fractions
我使用 NumPy 和分数模块来寻找给定方程组的答案。但我想通过除以最高分母将所有答案转换为整数。当我什至不知道这些值时,我该怎么做。
import numpy
from fractions import Fraction
a=[[3,4,1],
[2,3,0],
[4,3,-1]]
b=[[1],
[0],
[-2]]
values=numpy.linalg.solve(a, b)
for i in range(len(values)):
num=values[i][0]
fractional_value=Fraction(num).limit_denominator()
print(fractional_value)
输出:
-3/7
2/7
8/7
假设我不知道输出结果,我该如何删除最大的分母。/
一组数相除的最小数称为least common multiple。不幸的是,Python 没有提供开箱即用的这个功能,但我们可以从 gcd
(Python 提供)和产品。
from math import gcd
def lcm(a, b):
if a == 0 and b == 0:
return 0
return a * b // gcd(a, b)
现在我们要获取一个分数列表并计算它们的分母的最小公倍数。我将使用一个名为 functools.reduce
的小工具(它确实应该在 builtins
中,但那不是重点)
from functools import reduce
frac_list = [Fraction(-3, 7), Fraction(2, 7), Fraction(8, 7)] # Example list
denom_lcm = reduce(lcm, frac_list, 1)
然后我们可以用这个分母乘以所有的分数。
whole_frac_list = [denom_lcm * x for x in frac_list]
当然,如果我们想要 int
类型的值,我们也可以得到
whole_frac_list = [int(denom_lcm * x) for x in frac_list]
我使用 NumPy 和分数模块来寻找给定方程组的答案。但我想通过除以最高分母将所有答案转换为整数。当我什至不知道这些值时,我该怎么做。
import numpy
from fractions import Fraction
a=[[3,4,1],
[2,3,0],
[4,3,-1]]
b=[[1],
[0],
[-2]]
values=numpy.linalg.solve(a, b)
for i in range(len(values)):
num=values[i][0]
fractional_value=Fraction(num).limit_denominator()
print(fractional_value)
输出:
-3/7 2/7 8/7
假设我不知道输出结果,我该如何删除最大的分母。/
一组数相除的最小数称为least common multiple。不幸的是,Python 没有提供开箱即用的这个功能,但我们可以从 gcd
(Python 提供)和产品。
from math import gcd
def lcm(a, b):
if a == 0 and b == 0:
return 0
return a * b // gcd(a, b)
现在我们要获取一个分数列表并计算它们的分母的最小公倍数。我将使用一个名为 functools.reduce
的小工具(它确实应该在 builtins
中,但那不是重点)
from functools import reduce
frac_list = [Fraction(-3, 7), Fraction(2, 7), Fraction(8, 7)] # Example list
denom_lcm = reduce(lcm, frac_list, 1)
然后我们可以用这个分母乘以所有的分数。
whole_frac_list = [denom_lcm * x for x in frac_list]
当然,如果我们想要 int
类型的值,我们也可以得到
whole_frac_list = [int(denom_lcm * x) for x in frac_list]