【问题标题】:np.random.permutation with seed?np.random.permutation 与种子?
【发布时间】:2018-05-24 08:49:40
【问题描述】:

我想使用带有np.random.permutation 的种子,比如

np.random.permutation(10, seed=42)

我收到以下错误:

"permutation() takes no keyword arguments"

我还能怎么做呢?谢谢。

【问题讨论】:

    标签: python numpy random permutation


    【解决方案1】:

    在上一行设置种子

    np.random.seed(42)
    np.random.permutation(10)
    

    【讨论】:

      【解决方案2】:
      np.random.seed(42)
      np.random.permutation(10)
      

      如果您想多次调用np.random.permutation(10) 并获得相同的结果,您还需要在每次调用permutation() 时调用np.random.seed(42)。


      例如,

      np.random.seed(42)
      print(np.random.permutation(10))
      print(np.random.permutation(10))
      

      会产生不同的结果:

      [8 1 5 0 7 2 9 4 3 6]
      [0 1 8 5 3 4 7 9 6 2]
      

      同时

      np.random.seed(42)
      print(np.random.permutation(10))
      np.random.seed(42)
      print(np.random.permutation(10))
      

      将给出相同的输出:

      [8 1 5 0 7 2 9 4 3 6]
      [8 1 5 0 7 2 9 4 3 6]
      

      【讨论】:

        【解决方案3】:

        你可以把它分解成:

        import numpy as np
        np.random.seed(10)
        np.random.permutation(10)
        

        通过首先初始化随机种子,这将保证您获得相同的排列。

        【讨论】:

        • 这个答案不完整。有关更多详细信息,请参阅 Giorgos 的答案。
        • 似乎我们每次都必须重置随机种子以确保获得相同的随机数
        【解决方案4】:

        如果你想在一行中,你可以创建一个新的RandomState,然后在上面调用permutation:

        np.random.RandomState(seed=42).permutation(10)
        

        这比设置np.random 的种子要好,因为它只会产生局部效果。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-01-25
          • 2017-03-04
          • 2016-03-12
          • 2015-05-22
          • 2016-12-17
          • 2023-03-22
          • 2014-08-07
          • 2015-04-12
          相关资源
          最近更新 更多