numpy.random.seed()有什么用?它有什么区别吗?

时间:2016-11-25 15:56:11

标签: python numpy random

我有一个名为“admissions”的数据集。

我正在尝试对简单数据集执行保持验证。为了对数据集的索引进行排列,我使用以下命令:

import numpy as np
np.random.permutation(admissions.index)

我需要在排列之前使用np.random.seed()吗?如果是,那么为什么np.random.seed(number)中的数字代表什么?

2 个答案:

答案 0 :(得分:5)

您不需要在随机排列之前初始化种子,因为这已经为您设置了。 根据{{​​3}}的文件:

  

参数:
  种子:{None,int,array_like},可选   随机种子初始化伪随机数发生器。可以是一个   整数,任意长度的整数数组(或其他序列),或   无(默认)。如果seed为None,则RandomState将尝试读取   来自/ dev / urandom(或Windows模拟)的数据(如果可用)或种子   从时钟开始。

种子的概念与随机数的生成有关。您可以阅读更多相关信息RandomState

要将此答案与评论(来自JohnColeman)整合到您的问题中,我想提及此示例:

>>> numpy.random.seed(0)
>>> numpy.random.permutation(4)
array([2, 3, 1, 0])
>>> numpy.random.seed(0)
>>> numpy.random.permutation(4)
array([2, 3, 1, 0])

答案 1 :(得分:1)

请注意,np.random.seed 已弃用,仅保留用于向后兼容。这是因为重新播种现有的随机数生成器 (RNG) 是不好的做法。如果您需要种子(例如,使计算可重现以进行测试),请创建一个新的 RNG:

import numpy as np


rng = np.random.default_rng(seed=0)
out = rng.random(5)