For example, when I calculate 98/42
I want to get 7/3
, not 2.3333333
, is there a function for that using Python or Numpy
?
In Python the Fraction module supports rational number arithmetic. Using this module, we can create fractions from integers, floats, decimal and from some other numeric values and strings. There is a concept of Fraction Instance. It is formed by a pair of integers as numerator and denominator.
Changed in version 3.2: The Fraction constructor now accepts float and decimal. Decimal instances. Changed in version 3.9: The math. gcd() function is now used to normalize the numerator and denominator.
Get quotient and remainder with divmod() in Python In Python, you can calculate the quotient with // and the remainder with % . The built-in function divmod() is useful when you want both the quotient and remainder. divmod(a, b) returns a tuple (a // b, a % b) .
The fractions
module can do that
>>> from fractions import Fraction >>> Fraction(98, 42) Fraction(7, 3)
There's a recipe over here for a numpy gcd. Which you could then use to divide your fraction
>>> def numpy_gcd(a, b): ... a, b = np.broadcast_arrays(a, b) ... a = a.copy() ... b = b.copy() ... pos = np.nonzero(b)[0] ... while len(pos) > 0: ... b2 = b[pos] ... a[pos], b[pos] = b2, a[pos] % b2 ... pos = pos[b[pos]!=0] ... return a ... >>> numpy_gcd(np.array([98]), np.array([42])) array([14]) >>> 98/14, 42/14 (7, 3)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With