当前位置: 首页 > 编程笔记 >

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

夔光霁
2023-03-14
本文向大家介绍python numpy生成等差数列、等比数列的实例,包括了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生成等差数列、等比数列的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍python等差数列求和公式前 100 项的和实例,包括了python等差数列求和公式前 100 项的和实例的使用技巧和注意事项,需要的朋友参考一下 最近跑去学了下python,一个很简单的题,结果发现数学公示忘了,在不用for循环的情况下居然有些懵,记录为下.. 题:等差数列可以定义为每一项与它的前一项的差等于一个常数,可以用变量 x1 表示等差数列的第一项,用 d 表示公差,请计

  • 本文向大家介绍浅谈numpy中linspace的用法 (等差数列创建函数),包括了浅谈numpy中linspace的用法 (等差数列创建函数)的使用技巧和注意事项,需要的朋友参考一下 linspace 函数 是创建等差数列的函数, 最好是在 Matlab 语言中见到这个函数的,近期在学习Python 中的 Numpy, 发现也有这个函数,以下给出自己在学习过程中的一些总结。 (1)指定起始点 和

  • 问题内容: 无论如何,有没有将ArrayList拆分成不同的部分,直到运行时才知道它的大小?我知道有一种方法叫做: 但我们需要明确提及列表的起始和结束范围。我的问题是,我们得到一个包含帐号的数组列表,该数组具有类似2000,4000个帐号的数据(在编码期间不会知道这些数字),我需要将此帐号传递给PL / SQL的IN查询,如下IN不支持超过1000个值,我试图将其拆分成多个块并将其发送给查询 注意

  • 本文向大家介绍pandas使用apply多列生成一列数据的实例,包括了pandas使用apply多列生成一列数据的实例的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇pandas使用apply多列生成一列数据的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 我有两个数组列表。 如何在不使用外部库的情况下轻松地将它们 与Java 8及其功能的 相等性进行比较?我正在寻找一种比这种强力代码(未经测试的代码,可能包含错别字等)更好的(更高级别,更短,更有效)的解决方案: 或者,如果没有更好的方法,那也是一个有效的答案。 好处:如果Java 9提供了Java 8可以提供的更好的方法,请随时提一下。 编辑: 在查看评论并查看此问题如何变得中等热点之

  • 本文向大家介绍数据结构之矩阵行列和相等的实例,包括了数据结构之矩阵行列和相等的实例的使用技巧和注意事项,需要的朋友参考一下 以下为展示“矩阵行列和相等”的简单示例: 1.用c语言实现的版本 2.用C++语言实现的版本 运行结果如下图所示: 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!