np.random模块的使用

一. np.random函数的几个方法

1. randint方法

用法:
返回位于左闭右开区间[low, high)内的随机整数值

n1 = np.random.randint(low, high=None, size, dtype)
  • 若high=None,则区间变成[0, low)
  • size=(a1, a2, … an) n表示维度,即位置,a表示数量

例子:

import numpy as np

n1 = np.random.randint(0, 20, size=(4, 4))

# 结果 从0开始,到19为止,形状为4行4列
array([[ 9,  5,  6,  8],
       [12, 17, 12,  0],
       [19, 17,  2,  0],
       [ 8, 10, 16, 14]])

2. random_integers方法

用法:
返回位于闭区间[low, high]内的随机整数值

n1 = np.random.random_integers(low, high=None, size=None)

例子:

n1 = np.random.random_integers(1,2, size=(3,3))
n1

# 结果,注意都是闭区间
array([[1, 2, 1],
       [2, 2, 1],
       [1, 2, 2]])

3. randn方法

用法:
给定一个样本,根据n个参数来创建n维数组,形成标准正态分布 N (0, 1)

np.random.randn(d0, d1, d2...)

例子:

import numpy as np

np.random.randn(3, 4, 5)

# 三个参数,三维,且符合标准正态分布
array([[[-0.4267881 ,  0.79907241,  0.06558645,  0.56846871,
         -0.60150134],
        [-2.56899749,  0.20129116,  1.2167321 ,  0.80332927,
          0.64673455],
        [-0.35673913,  0.58996627,  0.61112403, -0.3615083 ,
          1.31457175],
        [-0.49602941,  0.30837027, -1.56858107,  1.22044173,
          0.14291741]],

       [[ 1.02120245,  1.37848749, -1.6988178 , -0.50370034,
          0.35153699],
        [-0.25619725,  0.29680301, -0.054829  , -1.62209135,
          0.47050918],
        [-1.35267491,  0.12623921,  1.12885889,  0.49857999,
         -0.52771809],
        [ 0.8251663 , -0.34056438,  0.41365914,  0.59521468,
          0.77814932]],

       [[ 0.84418071,  1.10451501,  0.3156979 , -1.71946682,
          0.83712133],
        [ 0.47051662, -1.08618576, -0.73211394,  0.33668081,
          1.29597196],
        [-1.38087117, -0.04018101, -0.6920373 , -1.06484634,
          2.33578686],
        [ 0.54886188, -0.7361285 ,  1.72410008,  0.80058421,
          0.39039427]]])

4. random方法

用法:
位于半闭半开区间[0, 1)之间返回随机浮点数

np.random.random(size=None)

例子:

import numpy as np

n1 = np.random.randm(size=(3,3))

# 输出
array([[0.30292115, 0.93516311, 0.17087608, 0.30503995],
       [0.94134184, 0.77921837, 0.51556829, 0.43035969],
       [0.03613825, 0.37428558, 0.98878298, 0.84480383],
       [0.29060345, 0.45568861, 0.71736105, 0.45968661]])

5. rand方法

用法:
位于半闭半开区间[0, 1)之间返回随机浮点数 ( 类似于random函数,但是,无需以元祖形式)

np.random.rand(d0, d1, d2...)

例子:

import numpy as np

np.random.rand(3, 4, 5)

# 结果 三个参数,三维数组,3块,每块4行5列
array([[[0.56016323, 0.69167638, 0.82799835, 0.02970935, 0.27672611],
        [0.38621987, 0.49315331, 0.57483268, 0.9697013 , 0.6353953 ],
        [0.64428337, 0.76332895, 0.199748  , 0.75873558, 0.16992543],
        [0.60268831, 0.06353345, 0.9757341 , 0.07057654, 0.16076173]],

       [[0.02701426, 0.67257958, 0.99772055, 0.7168825 , 0.50148429],
        [0.08054075, 0.04133829, 0.66562393, 0.80930431, 0.77983864],
        [0.80947662, 0.57800733, 0.27759842, 0.97862851, 0.15343574],
        [0.24949613, 0.08640029, 0.80799454, 0.05105837, 0.9906546 ]],

       [[0.51884528, 0.37004773, 0.00605422, 0.40602501, 0.49510074],
        [0.69035824, 0.92461631, 0.55212997, 0.38917785, 0.98895728],
        [0.63284274, 0.18999569, 0.4513288 , 0.12674819, 0.68599082],
        [0.33370925, 0.1862602 , 0.52014437, 0.74681225, 0.58680919]]])

6. choice方法

用法:

np.random.choice(a, size=None, replace=True, p=None)
a - 若为数组,则从中选值;若为单个整数,则选取range(a)中的值
replace - 若为True,则选取的元素会重复出现;反之,不会重复出现
p - 为数组,存放选取到每个数的可能性,即概率(若p存在,则p的个数必须指定和a相同)

例子:

import numpy as np

np.random.choice(4, size=(3,3), replace=True, p=[0.1, 0.1, 0.1, 0.7])

# 结果 
array([[0, 3, 3],
       [1, 3, 3],
       [3, 3, 3]], dtype=int64)

7. shuffle方法

用法:
把原来数组元素x位置打乱,它改变原来的数组。

np.random.shuffle(x)

例子:

import numpy as np

a = np.arange(10)
# 结果 array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

np.random.shuffle(a)
# 结果 array([9, 0, 3, 7, 2, 5, 4, 8, 6, 1])

注意:打乱以第一个索引为标准,即:一维数组a[ ],打乱元素;二维数组a[ ],打乱行;三维数组a[ ],打乱表示"个数"含义的数组
在这里插入图片描述
打乱后:(三维数组结构为(个数,行,列))
在这里插入图片描述

8. permutation方法

用法:
把原来数组元素x位置打乱,它不改变原来数组,即深拷贝了一份,具有返回值。

p = np.random.permutation(n1)

例子:

n1 = np.array([[2, 2, 1],
       		   [1, 2, 2],
               [1, 2, 1]])


p = np.random.permutation(n1)
p

# 结果
array([[1, 2, 1],
       [2, 2, 1],
       [1, 2, 2]])

9. seed方法

用法:
给一个随机序列指定一个种子标记,凡是出现该标记的随机序列,都可得到相同的第一次指定的随机序列;若不指定,则默认种子标记为时间戳

np.random.seed(seed=None)

例子:

# 种下种子标记 - 标记为1的随机序列
np.random.seed(1)
np.random.randint(10, size=10)
# 结果 array([5, 8, 9, 5, 0, 0, 1, 7, 6, 9])

# 不标记种子时,随机种子标记,默认标记为时间戳
np.random.randint(10, size=10)
# 结果 array([2, 4, 5, 2, 4, 2, 4, 7, 7, 9])

# 写上1标记时,提取出该随机序列
np.random.seed(1)
np.random.randint(10, size=10)
# 结果 array([5, 8, 9, 5, 0, 0, 1, 7, 6, 9])

10. RandomState方法

用法:
同seed

np.random.RandomState(seed=None)

11. uniform方法

用法:
位于闭区间[low, high]区间内返回的随机浮点数。较类似于random但有细微差异。

np.random.uniform(low, high, size=(3,3))

例子:

np.random.uniform(1.2, 1.2,size=(3,3))

# 结果
array([[1.2, 1.2, 1.2],
       [1.2, 1.2, 1.2],
       [1.2, 1.2, 1.2]])

12. 等同于random的方法

用法:
同random

np.random.random_sample(size=None)
np.random.ranf(size=None)
np.sample(size=None)

13. normal方法

用法:

normal(loc=0.0, scale=1.0, size=None)

loc:float
概率分布的均值,对应着整个分布的中心center

scale:float
概率分布的标准差,对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高

size:int or tuple of ints
输出的shape,默认为None,只输出一个值

我们更经常会用到np.random.randn(size)所谓标准正太分布(μ=0, σ=1)
对应于np.random.normal(loc=0, scale=1, size)

在这里插入图片描述

二. 官方文档与参考文章

文档:
NumPy官网
文章:
random模块详解

发布了45 篇原创文章 · 获赞 1 · 访问量 2441

猜你喜欢

转载自blog.csdn.net/weixin_44225602/article/details/102687965