【问题标题】:Faster alternatives to using numpy.random.choice in Python?在 Python 中使用 numpy.random.choice 的更快替代方案?
【发布时间】:2018-12-01 07:51:03
【问题描述】:

我的目标是在 Python 中生成一个大型二维数组,其中每个数字要么是 0 要么是 1。为此,我创建了一个嵌套的 for 循环,如下所示:

    for count in range(0,300):
      block = numpy.zeros((8,300000))

      for a in range(0,8):
        for b in range(0,300000):
          block[a][b] = numpy.random.choice(2,1, p=[0.9,0.1])

该方块有 90% 的机会选择“0”,有 10% 的机会选择“1”。但是外部for循环处理一次需要超过1分钟。有没有更有效的方法来为大量数组选择随机数,同时仍然能够使用“P”值? (这是我的第一篇文章,如果格式损坏,请见谅)

【问题讨论】:

    标签: python python-3.x numpy random


    【解决方案1】:

    NumPy 背后的想法是在 Python 级别循环 720000000 次迭代。您应该使用整个数组操作,例如让numpy.random.choice 在一次调用中生成整个选择数组:

    block = numpy.random.choice(2, size=(8, 300000), p=[0.9, 0.1])
    

    这几乎立即完成。

    【讨论】:

    • 我试试看,谢谢!我想一定有一种直接的方法可以将它分配给二维数组,但我不知道语法
    猜你喜欢
    • 1970-01-01
    • 2018-12-11
    • 2012-07-05
    • 2012-01-23
    • 2013-07-13
    • 2011-02-27
    • 2010-09-22
    • 2017-05-15
    相关资源
    最近更新 更多