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


Posted in Python onFebruary 25, 2020

如下所示:

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模块生成等差数列

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

然而,itertools.count 函数从不停止,因此,如果调用 list(count()),Python 会创建一 个特别大的列表,超出可用内存,在调用失败之前,电脑会疯狂地运转。

不过,itertools.takewhile 函数则不同,它会生成一个使用另一个生成器的生成器,在指 定的条件计算结果为 False 时停止。因此,可以把这两个函数结合在一起使用,编写下述 代码:

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

利用 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 相关文章推荐
Python实现的石头剪子布代码分享
Aug 22 Python
Python中使用strip()方法删除字符串中空格的教程
May 20 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
Feb 01 Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 Python
numpy给array增加维度np.newaxis的实例
Nov 01 Python
python爬虫获取新浪新闻教学
Dec 23 Python
Python编程实现tail-n查看日志文件的方法
Jul 08 Python
Python实现某论坛自动签到功能
Aug 20 Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 Python
Keras实现DenseNet结构操作
Jul 06 Python
Python函数__new__及__init__作用及区别解析
Aug 31 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
Oct 15 Python
信号生成及DFT的python实现方式
Feb 25 #Python
Pycharm远程连接服务器并实现代码同步上传更新功能
Feb 25 #Python
python生成任意频率正弦波方式
Feb 25 #Python
python numpy库linspace相同间隔采样的实现
Feb 25 #Python
Pandas时间序列:时期(period)及其算术运算详解
Feb 25 #Python
基于pygame实现童年掌机打砖块游戏
Feb 25 #Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
Feb 25 #Python
You might like
php 读取文件乱码问题
2010/02/20 PHP
php后门URL的防范
2013/11/12 PHP
smarty简单应用实例
2015/11/03 PHP
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
PDO::setAttribute讲解
2019/01/29 PHP
两个DIV等高的JS的实现代码
2007/12/23 Javascript
Javascript 篱式条件判断
2008/08/22 Javascript
javascript call和apply方法
2008/11/24 Javascript
JQuery 写的个性导航菜单
2009/12/24 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
jquery实现ajax提交form表单的方法总结
2014/03/03 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
Vue3不支持Filters过滤器的问题
2020/09/24 Javascript
Python break语句详解
2014/03/11 Python
在Python中调用ggplot的三种方法
2015/04/08 Python
Python中查看文件名和文件路径
2017/03/31 Python
Python操作Oracle数据库的简单方法和封装类实例
2018/05/07 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
Python Web框架之Django框架Model基础详解
2019/08/16 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
pandas实现将日期转换成timestamp
2019/12/07 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
2021/02/16 Python
解决margin 外边距合并问题
2019/07/03 HTML / CSS
html5基础教程常用技巧整理
2013/08/20 HTML / CSS
食品行业求职人的自我评价
2014/01/19 职场文书
八荣八耻的活动方案
2014/08/16 职场文书
义务教育学校标准化建设汇报材料
2014/08/16 职场文书
小学六年级毕业感言
2015/07/30 职场文书
Python+腾讯云服务器实现每日自动健康打卡
2021/12/06 Python