7. NumPy创建区间数组
1. 前言
所谓区间数组,是指数组元素的取值位于某个范围内,并且数组元素之间可能会呈现某种规律,比如等比数列、递增、递减等。
为了方便科学计算,Python NumPy 支持创建区间数组。
2. numpy.arange()
在 NumPy 中,您可以使用 arange() 来创建给定数值范围的数组,语法格式如下:
numpy.arange(start, stop, step, dtype)
参数说明见下表:
参数名称 | 参数说明 |
---|---|
start | 起始值,默认是 0。 |
stop | 终止值,注意生成的数组元素值不包含终止值。 |
step | 步长,默认为 1。 |
dtype | 可选参数,指定 ndarray 数组的数据类型。 |
根据start
与stop
指定的范围以及step
步长值,生成一个 ndarray 数组,示例如下。
import numpy as np x = np.arange(8) print (x)
输出结果如下所示:
[0 1 2 3 4 5 6 7]
设置 start 、stop 值以及步长,最终输出 0-10 中的奇数:
import numpy as np x = np.arange(1,10,2) print (x)
输出结果如下所示:
[1 3 5 7 9]
3. numpy.linspace()
表示在指定的数值区间内,返回均匀间隔的一维等差数组,默认均分 50 份,语法格式如下:
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
参数说明如下:
- start:代表数值区间的起始值;
- stop:代表数值区间的终止值;
- num:表示数值区间内要生成多少个均匀的样本。默认值为 50;
- endpoint:默认为 True,表示数列包含 stop 终止值,反之不包含;
- retstep:默认为 True,表示生成的数组中会显示公差项,反之不显示;
- dtype:代表数组元素值的数据类型。
示例如下:
import numpy as np #生成10个样本 a = np.linspace(1,10,10) print(a)
输出结果:
[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
下面示例是 endpoint 为 Fasle 时,此时不包含终止值:
import numpy as np arr = np.linspace(10, 20, 5, endpoint = False) print("数组数值范围 :",arr)
输出结果如下:
数组数值范围 : [10. 12. 14. 16. 18.]
retstep 参数使用示例如下:
import numpy as np x = np.linspace(1,2,5, retstep = True) print(x)
输出结果如下,其中 0.25 为等差数列的公差:
(array([1. , 1.25, 1.5 , 1.75, 2. ]), 0.25)
4. numpy.logspace
该函数同样返回一个 ndarray 数组,它用于创建等比数组,语法格式如下:
np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
其中 base 代表对数函数的底数,默认为 10,参数详细说明见下表:
参数名称 | 说明描述 |
---|---|
start | 序列的起始值:base**start。 |
stop | 序列的终止值:base**stop。 |
num | 数值范围区间内样本数量,默认为 50。 |
endpoint | 默认为 True 包含终止值,反之不包含。 |
base | 对数函数的 log 底数,默认为10。 |
dtype | 可选参数,指定 ndarray 数组的数据类型。 |
使用示例如下:
import numpy as np a = np.logspace(1.0,2.0, num = 10) print (a)
输出结果:
[ 10. 12.91549665 16.68100537 21.5443469 27.82559402 35.93813664 46.41588834 59.94842503 77.42636827 100. ]
下面是 base = 2 的对数函数,示例如下:
import numpy as np a = np.logspace(1,10,num = 10, base = 2) print(a)
输出结果:
[ 2. 4. 8. 16. 32. 64. 128. 256. 512. 1024.]