python numpy生成等差数列、等比数列的实例

 更新时间:2020年02月25日 13:13:39   作者:i徒然  
今天小编就为大家分享一篇python numpy生成等差数列、等比数列的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

如下所示:

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生成等差数列、等比数列的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Django中url与path及re_path的区别说明

    Django中url与path及re_path的区别说明

    这篇文章主要介绍了Django中url与path及re_path的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 使用python创建极坐标平面的示例代码

    使用python创建极坐标平面的示例代码

    PolarPlane 是 Manim(一个用于数学动画的Python库)中的一个类,用于创建极坐标平面,与笛卡尔坐标系不同,极坐标系是基于角度和半径来定位点的,本文就给大家介绍如何用python创建极坐标平面,需要的朋友可以参考下
    2024-08-08
  • Selenium python时间控件输入问题解决方案

    Selenium python时间控件输入问题解决方案

    这篇文章主要介绍了Selenium python时间控件输入问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Python 数据处理库 pandas进阶教程

    Python 数据处理库 pandas进阶教程

    在前面一篇文章中,我们对pandas做了一些入门介绍。本文是它的进阶篇。在这篇文章中,我们会讲解一些更深入的知识
    2018-04-04
  • python修改字典内key对应值的方法

    python修改字典内key对应值的方法

    这篇文章主要介绍了python修改字典内key对应值的方法,涉及Python中字典赋值的相关实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Pandas分组聚合之groupby()、agg()方法的使用教程

    Pandas分组聚合之groupby()、agg()方法的使用教程

    今天看到pandas的聚合函数agg,比较陌生,平时的工作中处理数据的时候使用的也比较少,为了加深印象,总结一下使用的方法,下面这篇文章主要给大家介绍了关于Pandas分组聚合之groupby()、agg()方法的使用教程,需要的朋友可以参考下
    2023-01-01
  • Python抓取手机号归属地信息示例代码

    Python抓取手机号归属地信息示例代码

    之前看到一篇文章有提供手机号归属地数据库的下载,由于手机号号段一直在增加,所以提供的数据基本上随时会过期,更理想的方法是从网上定期抓取其他站点维护的经纬度信息。下面这篇文章就给大家介绍了如何利用Python抓取手机归属地信息,有需要的朋友们可以参考借鉴。
    2016-11-11
  • Python自动重试HTTP连接装饰器

    Python自动重试HTTP连接装饰器

    这篇文章主要介绍了Python自动重试HTTP连接装饰器,有时候我们要去别的接口取数据,可能因为网络原因偶尔失败,为了能自动重试,写了这么一个装饰器,可以实现自动重连2次,需要的朋友可以参考下
    2015-04-04
  • pyodps中的apply用法及groupby取分组排序第一条数据

    pyodps中的apply用法及groupby取分组排序第一条数据

    这篇文章主要介绍了pyodps中的apply用法及groupby取分组排序第一条数据,问绽放围绕主题展开详细的内容介绍,具有一定的参考价值需要的小伙伴可以参考一下
    2022-05-05
  • flask框架自定义过滤器示例【markdown文件读取和展示功能】

    flask框架自定义过滤器示例【markdown文件读取和展示功能】

    这篇文章主要介绍了flask框架自定义过滤器,结合实例形式分析了flask基于自定义过滤器实现markdown文件读取和展示功能相关操作技巧,需要的朋友可以参考下
    2019-11-11

最新评论