【问题标题】:What is the use of numpy.random.seed() Does it make any difference?numpy.random.seed() 有什么用,有什么区别吗?
【发布时间】:2017-04-10 01:42:54
【问题描述】:

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

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

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

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

【问题讨论】:

标签: python numpy random


【解决方案1】:

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

import numpy as np


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

【讨论】:

    【解决方案2】:

    您不需要在随机排列之前初始化种子,因为这已经为您设置好了。 根据RandomState的文档:

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

    种子的概念与随机数的生成有关。你可以阅读更多关于它的信息here

    为了将此答案与您的问题的评论(来自 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])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-11
      • 2016-12-01
      • 2012-11-22
      • 2021-09-01
      • 2020-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多