Numpy 随机数生成函数

Numpy 随机数生成函数

阅读更多:Numpy 教程

Numpy简介

Numpy是一个基于Python语言的科学计算库,它能够处理多维数组及其运算,如矩阵运算、线性代数运算、随机数生成等。

下面,我们将着重讲解Numpy中的随机数生成函数。同时,我们将提到其中一个重要的函数——np.random.permutation(),以及如何在Numpy中使用随机种子(seed)来生成伪随机序列。

Numpy中的随机数生成函数

  1. np.random.rand(d0, d1, …, dn):生成均匀分布的随机数。返回值为指定维度的随机数组。
import numpy as np
arr = np.random.rand(2,3) # 生成一个2x3的随机数组
print(arr)

# Output:
# [[0.32324478 0.31329666 0.90208132]
#  [0.09982451 0.86546342 0.38502397]]
  1. np.random.randn(d0, d1, …, dn):生成标准正态分布的随机数。返回值为指定维度的随机数组。
import numpy as np
arr = np.random.randn(2,3) # 生成一个2x3的随机数组(标准正态分布)
print(arr)

# Output:
# [[-1.52199999 -0.92332574 -1.75918832]
#  [ 1.21633329  0.24593059  0.25501029]]
  1. np.random.randint(low[, high, size, dtype]):生成指定范围内的随机整数。返回值为指定维度的随机数组。
import numpy as np
arr = np.random.randint(0, 10, size=(2,3)) # 生成一个2x3的随机整数数组(范围为[0,10))
print(arr)

# Output:
# [[9 8 8]
#  [1 8 0]]

np.random.permutation函数

  1. np.random.permutation(x):随机排列一个数组。返回值为x的随机排列。
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
random_arr = np.random.permutation(arr) # 随机排列arr
print(random_arr)

# Output:
# [6 2 3 5 1 4]
  1. np.random.shuffle(x):将一个数组原地随机排列。函数无返回值。
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
np.random.shuffle(arr) # 随机排列arr
print(arr)

# Output:
# [5 1 6 4 2 3]

在Numpy中使用随机种子

在随机数生成中,随机种子(seed)可以用来控制生成的随机数序列。同一个随机种子会生成相同的随机数序列。在Numpy中,我们可以使用np.random.seed()函数来设置随机种子。

import numpy as np
np.random.seed(0)
arr1 = np.random.rand(2,3) # 生成一个2x3的随机数组
print(arr1)

np.random.seed(0)
arr2 = np.random.rand(2,3) # 再次生成一个2x3的随机数组
print(arr2)

# Output:
# [[0.5488135  0.71518937 0.60276338]
#  [0.54488318 0.4236548  0.64589411]]
# [[0.5488135  0.71518937 0.60276338]
#  [0.54488318 0.4236548  0.64589411]]

以上代码中,我们使用了相同的随机种子0来生成两个2×3的随机数组。这两个数组其实是相同的,因为它们共享一个随机数生成器(Random Number Generator,RNG)。

我们也可以通过改变随机种子来得到不同的随机数组,例如:

import numpy as np
np.random.seed(1)
arr1 = np.random.rand(2,3) # 生成一个2x3的随机数组
print(arr1)

np.random.seed(2)
arr2 = np.random.rand(2,3) # 再次生成一个2x3的随机数组
print(arr2)

# Output:
# [[4.17022005e-01 7.20324493e-01 1.14374817e-04]
#  [3.02332573e-01 1.46755891e-01 9.23385948e-02]]
# [[0.4359949  0.02592623 0.54966248]
#  [0.43532239 0.4203678  0.33033482]]

以上代码中,我们使用不同的随机种子来生成两个2×3的随机数组。可以看到,这两个数组是不同的。

总结

Numpy中的随机数生成函数在科学计算中非常重要。其中,np.random.permutation()函数可以用来随机排列一个数组,从而得到打乱后的样本序列。在使用随机数生成函数时,我们还可以使用随机种子来确定随机数序列,这能够帮助我们进行实验的重现,确保结果的可重复性。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程