python numpy生成等差数列、等比数列的实例
作者:i徒然 时间:2023-04-16 14:43:58
如下所示:
import numpy as np
# 等差数列
print(np.linspace(0.1, 1, 10, endpoint=True))
print(np.arange(0.1, 1.1, 0.1))
"""总结:
arange 侧重点在于增量,不管产生多少个数
linspace 侧重于num, 即要产生多少个元素,不在乎增量
"""
# 等比数列
np.logspace(1, 4, 4, endpoint=True, base=2) # 2**1---2**4
补充拓展:python 等差数列生成器代码
典型的迭代器模式作用很简单——遍历数据结构。不过,即便不是从集合中获取元素,而 是获取序列中即时生成的下一个值时,也用得到这种基于方法的标准接口。例如,内置的 range 函数用于生成有穷整数等差数列(Arithmetic Progression,AP), itertools.count 函 数用于生成无穷等差数列。
先来看等差数列:
"""
等差数列实现。
"""
class ArithmeticProgression:
def __init__(self, begin, step, end=None):
self.begin = begin
self.step = step
self.end = end # None -> 无穷数列
def __iter__(self):
result = type(self.begin + self.step)(self.begin)
forever = self.end is None
index = 0
while forever or result < self.end:
yield result
index += 1
result = self.begin + self.step * index
if __name__ == '__main__':
ap = ArithmeticProgression(0, 1, 3)
print(ap)
# print(list(ap))
a = iter(ap)
print(next(a))
这是个简单的示例,说明了如何使用生成器函数实现特殊的 __iter__ 方法。然而,如果一个类只是为了构建生成器而去实现 __iter__ 方法,那还不如使用生成器函数。毕竟,生成器函数是制造生成器的 工厂。
def aritprog_gen(begin, step, end=None):
result = type(begin + step)(begin)
forever = end is None
index = 0
while forever or result < end:
yield result
index += 1
result = begin + step * index
使用itertools模块生成等差数列
然而,itertools.count 函数从不停止,因此,如果调用 list(count()),Python 会创建一 个特别大的列表,超出可用内存,在调用失败之前,电脑会疯狂地运转。
不过,itertools.takewhile 函数则不同,它会生成一个使用另一个生成器的生成器,在指 定的条件计算结果为 False 时停止。因此,可以把这两个函数结合在一起使用,编写下述 代码:
利用 takewhile 和 count 函数,写出的代码流畅而简短。
import itertools
# 注意,下面示例中的 aritprog_gen 不是生成器函数,
# 因为定义体中没有 yield 关键字。
# 但是它会返回一个生成器,
# 因此它与其他生成器函数一样,
# 也是生成器工厂函数。
def aritprog_two_gen(begin, step, end=None):
first = type(begin + step)(begin)
ap_gen = itertools.count(first, step)
if end is not None:
ap_gen = itertools.takewhile(lambda n: n < end, ap_gen)
return ap_gen
来源:https://blog.csdn.net/OnePiece_97/article/details/86089243
标签:python,numpy,等差数列,等比数列
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
js实现的牛顿摆效果
2024-04-29 13:25:45
python基础之for循环
2021-08-06 02:12:51
![](https://img.aspxhome.com/file/2023/3/81573_0s.png)
windows下mysql 8.0.12安装步骤及基本使用教程
2024-01-19 15:17:53
![](https://img.aspxhome.com/file/2023/6/119706_0s.jpg)
Python转换字典成为对象,可以用"."方式访问对象属性实例
2021-06-01 09:01:50
Python详细对比讲解break和continue区别
2022-08-09 08:45:05
JS 判断undefined的实现代码
2024-04-19 09:53:58
减少新开窗口提升可访问性
2009-04-17 13:56:00
![](https://img.aspxhome.com/file/UploadPic/20094/17/msdn-47s.png)
asp.net 防止用户通过后退按钮重复提交表单
2023-07-21 00:03:54
python切割图片的实现示例
2023-05-14 12:42:19
![](https://img.aspxhome.com/file/2023/9/114799_0s.jpg)
python基础知识之索引与切片详解
2023-11-30 03:03:52
Golang 利用反射对结构体优雅排序的操作方法
2024-05-10 13:56:42
![](https://img.aspxhome.com/file/2023/9/127489_0s.png)
Python3中详解fabfile的编写
2022-08-09 14:33:08
Golang正整数指定规则排序算法问题分析
2023-07-12 09:12:03
JavaScript 字符串连接性能优化
2024-05-11 09:35:53
国产化设备鲲鹏CentOS7上源码安装Python3.7的过程详解
2023-04-23 14:08:42
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2023-03-16 14:33:51
在JavaScript中调用Java类和接口的方法
2024-04-10 10:42:49
Python中一些不为人知的基础技巧总结
2023-07-19 21:59:42
python实现简单tftp(基于udp协议)
2021-01-30 15:01:23
![](https://img.aspxhome.com/file/2023/9/114599_0s.jpg)
在ASP编程中nothing代表什么意思?
2011-04-15 10:47:00