首页 > Python3教程 > Python扩展程序库 -- NumPy

NumPy 从数值范围创建新数组

本文学习如何从数值范围创建数组

numpy.arange

numpy 中的使用 arange 函数创建数值范围并返回 ndarray 对象,函数格式如下:

numpy.arange(start, stop, step, dtype) 

函数接受下列参数:

序号 参数及描述
1. start 范围的起始值,默认为0
2. stop 范围的终止值(不包含)
3. step 两个值的间隔,默认为1
4. dtype 返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。

根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。

import numpy as np

x = np.arange(6)
print(x) # [0 1 2 3 4 5]

# 设置 dtype
x = np.arange(6, dtype = float)
print (x) # [0. 1. 2. 3. 4. 5.]

# 设置起始值、终止值及步长
x = np.arange(10,22,2)
print (x) # [10 12 14 16 18 20]

numpy.linspace

numpy.linspace 函数用于创建一个一维数组,数组是一个等差数列构成的,函数格式如下:

numpy.linspace(start, stop, num, endpoint, retstep, dtype) 

函数接受下列参数:

序号 参数及描述
1. start 序列的起始值
2. stop 序列的终止值,如果endpointtrue,该值包含于序列中
3. num 要生成的等间隔样例数量,默认为50
4. endpoint 序列中是否包含stop值,默认为ture
5. retstep 如果为true,返回样例,以及连续数字之间的步长
6. dtype 输出ndarray的数据类型
import numpy as np

# 设置起始点为 1 ,终止点为 10,数列个数为 10
a = np.linspace(1,10,10)
print(a) # [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]

# 元素全部是1的等差数列
a = np.linspace(1,1,10)
print(a) # [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]

# endpoint 设为 false,不包含终止值
# endpoint 设为 true,则会包含 20
a = np.linspace(10, 20, 5, endpoint = False)
print(a) # [10. 12. 14. 16. 18.]

# 设置间距
a = np.linspace(1, 10, 10, retstep = True)
print(a) # (array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]), 1.0)

# 拓展
b = np.linspace(1, 10, 10).reshape([10, 1])
print(b)
# [[ 1.]
# [ 2.]
# [ 3.]
# [ 4.]
# [ 5.]
# [ 6.]
# [ 7.]
# [ 8.]
# [ 9.]
# [10.]]

numpy.logspace

numpy.logspace 函数用于创建一个于等比数列。

即在对数刻度上均匀分布的数字,刻度的开始和结束端点是某个底数的幂,通常为 10。

格式如下:

numpy.logscale(start, stop, num, endpoint, base, dtype) 

函数参数如下:

序号 参数及描述
1. start 起始值是base ** start
2. stop 终止值是base ** stop
3. num 范围内的数值数量,默认为50
4. endpoint 如果为true,终止值包含在输出数组当中
5. base 对数空间的底数,默认为10
6. dtype 输出数组的数据类型,如果没有提供,则取决于其它参数

base 参数意思是取对数的时候 log 的下标。

import numpy as np

# 默认底数是 10
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. ]

# 对数的底数设置为 2
a = a = np.logspace(0,9,10,base=2)
print (a) # [ 1. 2. 4. 8. 16. 32. 64. 128. 256. 512.]
关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。