随机数和随机操作
多种随机数生成
rand
np.random.rand(dim1,dim2,dim3...)
- 生成带shape[0,1)之间取值的Array
random
np.random.random([dim1,dim2])
- 与rand类似
randint
np.random.randint(low,high,size)
- 随机生成再[low,high)之间的size个数
对已有数据进行随机处理
choice
np.random.choice(arr,size)
- 在一组数据中随机选择一些数据
- 其他:
- np.random.choice(arr) #选一个
- np.random.choice(arr,size) #选多个
- np.random.choice(arr,size,replace=False). #不重复的选择
- np.random.choice(arr,size,p=[0,0.2,0.3]). #带权重的选择
shuffle
np.random.shuffle(arr)
- 对原有数据进行随机打乱
- 如果需要保留原始数据,需要使用copy()
permutation
np.random.permutation()
- 返回一个新数据
- 直接生成乱序的序列号
随机分布
normal
np.random.normal(means,std,size)
- 生成一个正太分布的随机数据
uniform
np.random.uniform(low,high,size)
- 生成一个均匀分布
伪随机
有时,为了比较初始化模型的优劣,或者在强化学习中要固定随机环境的伪随机序列,用于复现当前配置的情况,需要使用伪随机
seed
np.random.seed(1)
- 1是随机序号
- 相同的随机序号每次运行的结果是一样的
'''
Description: 随机数和随机生成
Autor: 365JHWZGo
Date: 2021-11-17 21:58:26
LastEditors: 365JHWZGo
LastEditTime: 2021-11-17 22:50:36
'''
import numpy as np
data = np.arange(20,dtype=int)
print('原始data:\n',data)
print('random.randn:\n',np.random.randn(3,4))
print('random.random:\n',np.random.random([3,4]))
print('random.randint:\n',np.random.randint(1,10,10))
print('random.choice:\n',np.random.choice(data,2,replace=False))
print('random.shuffle:\n',np.random.shuffle(data))
print('shuffle之后的data:\n',data)
data = np.arange(20,dtype=int)
print('random.permutation:\n',np.random.permutation(data))
print('permutation之后的data:\n',data)
print('random.normal:\n',np.random.normal(0,1,5))
print('random.uniform:\n',np.random.uniform(-1,1,5))
运行结果:
原始data:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
random.randn:
[[ 1.09915619 0.81003414 -0.25341824 0.06337777]
[ 0.51571388 -0.63545361 2.03279423 -0.20790151]
[ 0.66207485 -0.56811394 -0.87433004 -1.39413948]]
random.random:
[[0.43306495 0.46688371 0.38891675 0.17372101]
[0.73356162 0.8906067 0.83650494 0.46585826]
[0.08245838 0.06174975 0.0184939 0.47244699]]
random.randint:
[2 3 2 4 6 2 1 1 4 4]
random.choice:
[6 5]
random.shuffle:
None
shuffle之后的data:
[19 8 3 15 9 14 12 7 5 13 4 2 16 1 0 6 18 11 17 10]
random.permutation:
[ 1 19 3 17 10 14 0 4 12 18 2 13 8 16 7 11 5 9 6 15]
permutation之后的data:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
random.normal:
[ 0.24561853 1.34731891 -1.11859979 0.07651908 -2.2713683 ]
random.uniform:
[-0.30733277 -0.3373615 -0.37874023 0.78895057 0.22378715]