python numpy基础(二)random基本使用

来源:互联网 发布:手机怎样举报淘宝卖家 编辑:程序博客网 时间:2024/06/05 12:43

(一)设置随机种子,会使后续的随机数都会固定下,不会因为程序运行多次而改变

import numpy as npnp.random.seed(1)print np.random.rand()# 例如运行多次,依旧保持0.548813503927print np.random.rand()# 例如运行多次,依旧保持0.715189366372

(二)生成随机数

# 生成随机数pythonimport numpy as npprint np.random.rand()# 0.737898207626,默认生成一个[0,1)浮点数print np.random.rand(3)# [ 0.13565447  0.98265097  0.68823444],生成3个# 生成随机2*2矩阵print np.random.rand(2,2)# [[ 0.51666387  0.94009316]#  [ 0.39298786  0.72569242]]# np.random.rand和np.random.random_sample其实差不多,就输入参数不同print np.random.random_sample((2,2))# [[ 0.61852378  0.70618663]#  [ 0.64536942  0.15789266]]# numpy.random.randint(low, high=None, size=None, dtype='l')# 生成一个整数或N维整数数组,取数范围:若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数# 生成一个[0,2)之间随机整数print np.random.randint(5)#2# 生成一个[2,5)之间随机整数print np.random.randint(2,5)# 3print np.random.randint(5,size=5)# [1 1 2 2 4]# 生成一个[2,5)之间随机2*2的矩阵print np.random.randint(2,5,size=(2,2))# [[3 2]#  [4 4]]# np.random.randint和random.random_integers差不多,都是生成随机整数print np.random.random_integers(2,5,size=(2,2))# [[3 3]#  [4 4]]

(三)常用的数学样本分布:正太分布,标准正太分布

# 常用的数学样本分布:正太分布,标准正太分布import numpy as npprint np.random.randn()# -0.330575330738print np.random.randn(5)# [ 1.83188629 -0.83997864 -1.6763442  -0.04505718 -0.65242212]print np.random.randn(2,3)# [[-0.93742626 -0.62867399 -0.60228364]#  [ 0.29129602  0.16947085 -0.44884333]]# 生成标准正太分布随机样本print np.random.standard_normal((2,3))# [[ 0.2172888  -0.57062087  0.50106583]#  [-0.62042828 -0.7372449  -0.73330439]]# 可以使用下述表达式查看点分布情况import numpy as npimport matplotlib.pyplot as pltplt.figure()n=1000#rand 均匀分布和 randn高斯分布x=np.arange(0,100,0.1)y=np.random.randn(1,n)y.sort()print y.shape# xx,yy = np.meshgrid(x,y)#c:散点的颜色,s:散点的大小,alpha:是透明程度plt.scatter(x,y,c='red',s=25,alpha=0.4,marker='o')plt.show()

这里写图片描述
(四)在有限集合中获取随机数

#在有限集合中获取随机数# numpy.random.choice(a, size=None, replace=True, p=None)# 从序列中获取元素,若a为整数,元素取值为np.range(a)中随机数;若a为数组,取值为a数组元素中随机元素# replace表示是否可以拿出相同的值,p表示取出集合中各个元素的概率,p中的元素长度必须和a相同,且加起来等于1#生成一个range(10)中的随机数import numpy as npprint np.random.choice(10)# 7# 生成一维数组,在[0-10)中取4个数print np.random.choice(10,4)# [8 3 2 6]# 生成多维数组print np.random.choice(10,(2,2))# [[7 8]#  [2 8]]# 自定义随机拿取集合print np.random.choice(np.array(['a','b','c','f']),(2,2))# [['f' 'f']#  ['c' 'a']]# 只会出现a和fprint np.random.choice(np.array(['a','b','c','f']),(2,2),p=[0.5,0,0,0.5])# [['a' 'f']#  ['f' 'f']]

(五)numpy洗牌

# numpy洗牌#numpy.random.shuffle(x)import numpy as nparr1 = [1,2,3,4,5]np.random.shuffle(arr1)print arr1#[2, 1, 5, 4, 3]#对于多维数组,只沿着第一条轴打乱顺序# numpy.random.shuffle(x)和numpy.random.permutation(x)差不多,不同的是permutation不会影响原来的数组arr2 = [1,2,3,4,5]np.random.permutation(arr2)print arr2# [1, 2, 3, 4, 5]arr3 = np.arange(9).reshape(3,3)print arr3# [[0 1 2]#  [3 4 5]#  [6 7 8]]np.random.shuffle(arr3)print arr3# [[6 7 8]#  [0 1 2]#  [3 4 5]]
原创粉丝点击