python数据结构算法题五十一:分数运算

文章介绍了如何在Python中使用fractions模块进行分数计算,包括基本的加减乘除以及转换操作。同时,通过对比Python列表和NumPy数组在数组运算上的区别,展示了NumPy在处理大型数据集时的优势。
摘要由CSDN通过智能技术生成

问题:

你进入时间机器,突然发现你正在做小学家庭作业,并涉及到分数计算问题。或者 你可能需要写代码去计算在你的木工工厂中的测量值。

解决方案:

fractions 模块可以被用来执行包含分数的数学运算。

>>> from fractions import Fraction >>> a = Fraction(5, 4)
>>> b = Fraction(7, 16)
>>> print(a + b)
27/16
>>> print(a * b) 35/64
>>> # Getting numerator/denominator >>> c = a * b
>>> c.numerator
35
>>> c.denominator 64
>>> # Converting to a float >>> float(c)
0.546875
>>> # Limiting the denominator of a value >>> print(c.limit_denominator(8))
4/7
>>> # Converting a float to a fraction >>> x = 3.75
>>> y = Fraction(*x.as_integer_ratio()) >>> y
Fraction(15, 4)
>>>

在大多数程序中一般不会出现分数的计算问题,但是有时候还是需要用到的。比 如,在一个允许接受分数形式的测试单位并以分数形式执行运算的程序中,直接使用分 数可以减少手动转换为小数或浮点数的工作。

1. 大型数组运算:

涉及到数组的重量级运算操作,可以使用 NumPy 库。NumPy 的一个主要特征是它 会给 Python 提供一个数组对象,相比标准的 Python 列表而已更适合用来做数学运算,展示标准列表对象和 NumPy 数组对象之间的差别。

>>> # Python lists >>> x = [1, 2, 3, 4] >>> y = [5, 6, 7, 8] >>> x * 2
[1, 2, 3, 4, 1, 2, 3, 4]
>>> x + 10
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "int") to list >>> x + y
[1, 2, 3, 4, 5, 6, 7, 8]
>>> # Numpy arrays
>>> import numpy as np
>>> ax = np.array([1, 2, 3, 4]) >>> ay = np.array([5, 6, 7, 8]) >>> ax * 2
array([2, 4, 6, 8])
>>> ax + 10
array([11, 12, 13, 14])
>>> ax + ay
array([ 6, 8, 10, 12])
>>> ax * ay
array([ 5, 12, 21, 32])
>>>

正如所见,两种方案中数组的基本数学运算结果并不相同。特别的,NumPy 中的标 量运算 (比如 ax * 2 或 ax + 10 ) 会作用在每一个元素上。另外,当两个操作数都是 数组的时候执行元素对等位置计算,并最终生成一个新的数组。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值