参考 Python从零开始系列连载,by 王大伟 Python爱好者社区
参考 Hellobi Live | 1小时破冰入门Python
参考 《简明python教程》
Note: 更多连载请查看【python】
文章目录
1 Random
1.1 choice()
1.1.1 random.choice()
从序列中获取一个随机元素
import random
random.choice('Python大法好')
结果为'法'
random.choice(['a','b','c']) # 列表
结果为'c'
random.choice(('a','b','c')) # 元组
结果为'b'
1.1.2 np.random.choice()
numpy.random.choice(a, size=None, replace=True, p=None)
- 从给定的一维数组中生成随机数
- 参数: a为一维数组类似数据或整数;size为数组维度;p为数组中的数据出现的概率
- a为整数时,对应的一维数组为np.arange(a)
import numpy as np
np.random.choice(5,size=(3,2))
output
replace = True
的时候,抽样会有重复,=False
的时候不会
import numpy as np
list1 =[1,2,3,4,5]
list2 = np.random.choice(list1,4,replace=False)
list2
Output
array([5, 2, 1, 4])
list1 =[1,2,3,4,5]
list2 = np.random.choice(list1,4,replace=True)
list2
Output
array([1, 3, 1, 5])
比较灵活的用法是,利用 replace = True
进行无中生有,例如 ReID 中的 num_instance
list1 = [1,2]
np.random.choice(list1, 4, replace=True)
output
array([1,2,1,2])
1.2 randint()
1.2.1 random.randint()
用于生成一个指定范围内的整数,能取到左右两个边界的值
import random
print(random.randint(2,3))
取得到3
1.2.2 np.random.randint()
np.random.randint(low, high=None, size=None)
返回随机整数,范围区间为[low,high)
import numpy as np
print(np.random.randint(2,3))
取不到3
1.2.3 np.random.random_integers()
numpy.random.random_integers(low, high=None, size=None)
- 返回随机整数,范围区间为[low,high],包含low和high
- 参数:low为最小值,high为最大值,size为数组维度大小
- high没有填写时,默认生成随机数的范围是[1,low]
1.2.4 np.random.rand()
numpy.random.rand(d0,d1,…,dn)
- rand函数根据给定维度生成[0,1)之间的数据,包含0,不包含1
- dn表格每个维度
- 返回值为指定维度的array
1.2.5 np.random.randn()
numpy.random.randn(d0,d1,…,dn)
- randn函数返回一个或一组样本,具有标准正态分布。
- dn表格每个维度
- 返回值为指定维度的array
1.3 random()
1.3.1 random.random()
用于生成一个 0 到 1 的随机符点数: 0 <= n < 1.0
import random
random.random()
结果为0.3238482303759488
1.3.2 np.random.random()
numpy.random.random(size=None)
生成 [0,1) 之间的浮点数
1.4 random.randrange()
https://www.runoob.com/python/func-number-randrange.html
从序列中获取一个随机数
random.randrange(10,100,2)#从[10, 12, 14, 16, ... 96, 98]序列中获取一个随机数
结果为
50
1.5 random.sample()
从指定序列中随机获取指定长度的片断,不改变原来序列顺序
list2 = [i**2 for i in range(0,10)]
random.sample(list2,3)
结果为
[4, 49, 0]
看看list2有没有改变
list2
结果为
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
没有改变,所以sample函数不会修改原有序列
1.6 random.shuffle()
将一个列表中的元素打乱
list1 = [1,2,3,4,5,6]
random.shuffle(list1)
list1
结果为
[5, 6, 4, 3, 1, 2]
1.7 random.uniform()
uniform() 方法将随机生成下一个实数,它在 [x, y) 范围内。
random.uniform(2,3)
结果为
2.1728175107763374
2 组合
2.1 随机产生指定区间和长度的整数
import random
def random_int_list(start, stop, length):
start, stop = (int(start), int(stop)) if start <= stop else (int(stop), int(start))
length = int(abs(length)) if length else 0
random_list = []
for i in range(length):
random_list.append(random.randint(start, stop)) # 核心
return random_list
测试
random_float_list(1.0,2.0,5)
output
[1.08,
1.6200000000000006,
1.7000000000000006,
1.9500000000000008,
1.7800000000000007]
2.2 随机产生指定区间和长度的浮点数
import random
def random_float_list(start, stop, length):
start, stop = (start, stop) if start <= stop else (stop,start)
length = int(abs(length)) if length else 0
random_list = []
for i in range(length):
random_list.append(np.random.choice(np.arange(start,stop,0.01))) # 核心
return random_list
测试
random_int_list(1,10,5)
output
[2, 10, 7, 7, 9]
3 linspace() 等差数列
linspace()
通过指定开始值、终值和元素个数创建表示等差数列的一维数组,可以通过endpoint参数指定是否包含终值,默认值为True,即包含终值。
x_data = np.linspace(-1,1,10)
x_data #(10,)
output
array([-1. , -0.77777778, -0.55555556, -0.33333333, -0.11111111,
0.11111111, 0.33333333, 0.55555556, 0.77777778, 1. ])
加一维
x_data = np.linspace(-1,1,10)[:,np.newaxis]
x_data
output
array([[-1. ],
[-0.77777778],
[-0.55555556],
[-0.33333333],
[-0.11111111],
[ 0.11111111],
[ 0.33333333],
[ 0.55555556],
[ 0.77777778],
[ 1. ]])
4 np.random.seed()
- np.random.seed()的作用:使得随机数据可预测。
- 当我们设置相同的seed,每次生成的随机数相同。如果不设置seed,则每次会生成不同的随机数
import numpy as np
np.random.seed(155)
print(np.random.rand(5))
np.random.seed(155)
print(np.random.rand(5))
np.random.seed(0)
print(np.random.rand(5))
output
[0.65232633 0.92112296 0.17314591 0.62062509 0.10662668]
[0.65232633 0.92112296 0.17314591 0.62062509 0.10662668]
[0.5488135 0.71518937 0.60276338 0.54488318 0.4236548 ]
Note: 更多连载请查看【python】