numpy.choice与numpy.randint有何不同?

时间:2019-04-20 10:44:48

标签: python numpy

我需要从长度为n的数组A中进行替换采样。我想知道以下两个命令有何不同。如果它们都给出相同的结果,那么哪个更好(在性能等方面……)

A[np.random.randint(0, n, n)]

A[np.random.choice(n, n)]

3 个答案:

答案 0 :(得分:1)

选择的目的是对数组进行采样,给它一个整数是给它一个整数长度范围的捷径。因此,如果您滥用自己的选择方式,那么randint可能会更有效率。

不过,正确的方法是np.random.choice(A, size=n)。这就是您拼写“替换样品”的方式。

答案 1 :(得分:1)

randint返回所提供范围内的随机整数。 choice从提供的数组中返回一个随机元素,或者,如果您提供一个int(如u),它的功能类似于np.random.randint(0, n, n)。 因此,在此示例中没有区别,但是我认为randint会稍快一些。

答案 2 :(得分:0)

numpy.randon.randint和numpy.random.choice都为您提供了从范围(如果是randint)或数组(如果选择)中选择随机数的选项。当数组中的项目在某个范围内时,那么使用numpy.random.choice的主要区别是:

  • 指定是否要从阵列中进行替换或不进行替换的结果。
  • 指定与数组中每个条目关联的概率。

一次掷硬币的结果

  • np.random.randint(2)

一万次硬币翻转的结果

  • np.random.randint(2, size=10000)

一次掷硬币的结果

  • np.random.choice([0, 1])

一万次硬币翻转的结果

  • np.random.choice([0, 1], size=10000)

一万次有偏见的硬币翻转的结果

  • np.random.choice([0, 1], size=10000, p=[0.8, 0.2])