python numpy生成等差数列、等比数列的实例
2020-03-25 12:06
1356 查看
如下所示:
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
以上这篇python numpy生成等差数列、等比数列的实例就是小编分享给大家的全部内容了,希望能给大家一个参考
您可能感兴趣的文章:
相关文章推荐
- python numpy生成等差数列、等比数列
- python模块numpy的基本使用实例
- python 实现红包随机生成算法的简单实例
- python numpy 按行归一化的实例
- python numpy 矩阵堆叠实例
- 学习python:实例2.用PIL生成随机验证码
- 文档主题生成模型(LDA)算法原理及Spark MLlib调用实例(Scala/Java/python)
- Python for循环生成列表的实例
- Python numpy生成矩阵、串联矩阵代码分享
- Python遍历numpy数组的实例
- python基础教程:python、PyTorch图像读取与numpy转换实例
- Python3.5基础之NumPy模块的使用图文与实例详解
- Python.Numpy学习零碎笔记之随机数生成
- scala---文档主题生成模型(LDA)算法原理及Spark MLlib调用实例(Scala/Java/python)
- python根据文本生成词云图代码实例
- python3+opencv生成不规则黑白mask实例
- python 实例详解map()函数、lambda函数、二进制移位--生成和2的次方有关的矩阵
- python生成lmdb格式的文件实例
- 详解python脚本自动生成需要文件实例代码
- 实例:python图像处理(Pillow+numpy)