gpt4 book ai didi

python - 找到将 float 列表转换为整数列表的公因数

转载 作者:太空宇宙 更新时间:2023-11-04 00:34:39 24 4
gpt4 key购买 nike

我有一个来自其他函数的 float 列表。我所知道的是在理想世界中存在一个共同因素可用于将每一项相乘以获得整数列表。可能会有一些小的数字噪声 (~1e-14)。

比如

[2.3333333333333335, 4.666666666666667, 1.0, 1.6666666666666667]

这里每一项都可以乘以3得到

[7.0, 14.0, 3.0, 5.0]

我怎样才能找到这个词?我们可以假设存在整数解。

任何有用的意见将不胜感激

最佳答案

Python 的 Fraction type 可以将 float 转换为分母在 1000000 以下的有理数,然后你可以找到最小公分母。

>>> from fractions import Fraction
>>> a = [2.3333333333333335, 4.666666666666667, 1.0, 1.6666666666666667]
>>> [Fraction(x).limit_denominator() for x in a]
[Fraction(7, 3), Fraction(14, 3), Fraction(1, 1), Fraction(5, 3)]

使用 math.gcd 找到最小公倍数的直接方法功能:

>>> denoms = [3,3,1,2]
>>> functools.reduce(lambda a,b: a*b//math.gcd(a,b), denoms)
6

关于python - 找到将 float 列表转换为整数列表的公因数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44587875/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com