我需要从长度为n的数组A中进行替换采样。我想知道以下两个命令有何不同。如果它们都给出相同的结果,那么哪个更好(在性能等方面……)
A[np.random.randint(0, n, n)]
A[np.random.choice(n, n)]
答案 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])