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 11 Python
Python实现SMTP发送邮件详细教程
Mar 02 Python
python实现人民币大写转换
Jun 20 Python
Python中断多重循环的思路总结
Oct 04 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
Jan 08 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
Jun 12 Python
Python之Matplotlib文字与注释的使用方法
Jun 18 Python
Python趣味入门教程之循环语句while
Aug 26 Python
Python+OpenCV图像处理——实现直线检测
Oct 23 Python
Python爬虫破解登陆哔哩哔哩的方法
Nov 17 Python
Python OpenCV中的numpy与图像类型转换操作
Dec 11 Python
浅谈Python基础之列表那些事儿
May 11 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遍历二维数组的代码
2011/04/22 PHP
php daddslashes()和 saddslashes()有哪些区别分析
2012/10/26 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
php通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
PHP递归实现汉诺塔问题的方法示例
2017/11/25 PHP
js技巧--转义符&quot;\&quot;的妙用
2007/01/09 Javascript
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
jquery select下拉框操作的一些说明
2010/04/02 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
js的参数有长度限制吗?发现不能超过2083个字符
2014/04/20 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
2017/03/08 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
微信小程序实现美团菜单
2018/06/06 Javascript
axios简单实现小程序延时loading指示
2018/07/30 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
2019/03/13 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
Python常用的日期时间处理方法示例
2015/02/08 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
python实现在pandas.DataFrame添加一行
2018/04/04 Python
在pycharm中使用git版本管理以及同步github的方法
2019/01/16 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
2019/11/04 Python
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
应急处置方案
2014/06/16 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
交通安全月活动总结
2015/05/08 职场文书
党课主持词大全
2015/06/30 职场文书
班主任远程培训研修日志
2015/11/13 职场文书