• 【Python】Numpy生成等差数组


    arange

    arange是Numpy中使用频率超高的一个数组生成器,其输入参数可以为一个、两个或者三个。

    • np.arange(N) 生成 [ 0 , N ) [0,N) [0,N)区间的所有自然数
    • np.arange(a,b) 生成 { a + i ∣ i ∈ Z , a + i < b } \{a+i|i\in Z, a+i{a+iiZ,a+i<b}
    • np.arange(a,b,delta) 生成 { a + δ i ∣ i ∈ Z , a + δ i < b } \{a+\delta i|i\in Z, a+\delta i{a+δiiZ,a+δi<b}
    >>> np.arange(10)
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    >>> np.arange(3,5)
    array([3, 4])
    >>> np.arange(3,10,2)
    array([3, 5, 7, 9])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    linspace

    arange作用相似的函数是linspace,其输入参数为np.linspace(a,b,num),其含义为,在 [ a , b ] [a,b] [a,b]区间内等间隔生成num个数;如果指明endpoint=False,则不包含 b b b点。

    >>> np.linspace(1,2,5)
    array([1.  , 1.25, 1.5 , 1.75, 2.  ])
    >>> np.linspace(1,2,5,endpoint=False)
    array([1. , 1.2, 1.4, 1.6, 1.8])
    
    • 1
    • 2
    • 3
    • 4

    对数数组

    logspacelinspace的逻辑是相似的,都是在某个区间内等间隔生成数组,只不过logspace的等间隔,是对数意义上的等间隔,其等价于10**np.linspace

    >>> print(np.logspace(1,2,5))
    [ 10.          17.7827941   31.6227766   56.23413252 100.        ]
    >>> print(10**np.linspace(1,2,5))
    [ 10.          17.7827941   31.6227766   56.23413252 100.        ]
    
    • 1
    • 2
    • 3
    • 4

    logspace中的base参数,可以指定对数的底,例如

    >>> print(np.logspace(1,2,5,base=2))
    [2. 2.37841423 2.82842712 3.36358566 4.        ]
    
    • 1
    • 2

    geomspace同样是等间隔生成对数,但和logspace的区别是,同样在a,b区间内生成对数,logspace生成范围是 [ 1 0 a , 1 0 b ] [10^a,10^b] [10a,10b]geomspace的范围则是 [ a , b ] [a,b] [a,b]

    >>> print(np.geomspace(1,2,5))
    [1.         1.18920712 1.41421356 1.68179283 2.        ]
    
    • 1
    • 2

    这种区别可能过于微秒,画个图可能理解起来更加容易

    import numpy as np
    import matplotlib.pyplot as plt
    x = np.linspace(1,2,20)
    y = np.logspace(1,2,20)
    plt.plot(x,y,marker="*")
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    x = np.linspace(1,2,20)
    y = np.geomspace(1,2,20)
    plt.plot(x,y,marker="*")
    plt.show()
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    小结

    最后,总结一下这四个函数的区别,首先是linspacearange

    • linspace(a,b,N) [ a , b ] [a,b] [a,b]中间生成N个值
    • arange(a,b,delta) [ a , b ) [a,b) [a,b)之间,以 d e l t a delta delta为间隔生成值

    然后是三个space函数

    • linspace(a,b,N) [ a , b ] [a,b] [a,b]中间生成N个值
    • logspace(a,b,N,base=c) [ c a , c b ] [c^a, c^b] [ca,cb]之间等指数间隔生成N个值
    • geomspace(a,b,N,base=c) [ a , b ] [a,b] [a,b]之间,等指数间隔生成N个值
  • 相关阅读:
    一种跳板机的实现思路
    自己动手从零写桌面操作系统GrapeOS系列教程——14.屏幕显示原理与文本模式
    踩坑npm install qrcodejs2和crypto-js
    Go 通道机制与应用详解
    Pytorch框架学习记录5——DataLoader的使用
    【面试经典150 | 位运算】二进制求和
    zabbix监控
    Java认识异常(超级详细)
    everything-everything使用技巧,过滤文件语法
    [手写spring](4)实现后置处理器
  • 原文地址:https://blog.csdn.net/m0_37816922/article/details/127860116