numpy.random.choice 与替换等同于单次试验的多项式抽样吗?
Is numpy.random.choice with replacement equivalent to multinomial sampling for a single trial?
我理解严格来说,它们是不同的。但是在 numpy.random.multinomial
的单个试验(或实验)中,它的采样方式是否与 numpy.random.choice
相同,尽管给出了不同的输出视图?
例如:
>> np.random.choice(6, size=6, replace=True, p=[1/6.]*6)
>> array([2, 0, 4, 2, 5, 4])
输出给出了在数组中选取的内容的标识 [0,1,2,3,4,5]
和
>> np.random.multinomial(1, [1/6.]*6, size=6)
>> array([[0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 1],
[0, 0, 0, 1, 0, 0],
[0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 1, 0],
[1, 0, 0, 0, 0, 0]])
输出给出每个选项被选中的次数,但由于它仅限于 1 次试验,因此也可以从选项 [0,1,2,3,4,5]
中总结为 [2,5,3,3,4,1]
是的,它们实际上是一样的。
是的,但是 multinomial
更快。
$ python -m timeit 'import numpy as np' 'np.nonzero(np.random.multinomial(1, [1/6.]*6, size=6))[1]'
50000 loops, best of 5: 4.84 usec per loop
$ python -m timeit 'import numpy as np' 'np.random.choice(6, size=6, replace=True, p=[1/6.]*6)'
20000 loops, best of 5: 15.9 usec per loop
我理解严格来说,它们是不同的。但是在 numpy.random.multinomial
的单个试验(或实验)中,它的采样方式是否与 numpy.random.choice
相同,尽管给出了不同的输出视图?
例如:
>> np.random.choice(6, size=6, replace=True, p=[1/6.]*6)
>> array([2, 0, 4, 2, 5, 4])
输出给出了在数组中选取的内容的标识 [0,1,2,3,4,5]
和
>> np.random.multinomial(1, [1/6.]*6, size=6)
>> array([[0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 1],
[0, 0, 0, 1, 0, 0],
[0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 1, 0],
[1, 0, 0, 0, 0, 0]])
输出给出每个选项被选中的次数,但由于它仅限于 1 次试验,因此也可以从选项 [0,1,2,3,4,5]
[2,5,3,3,4,1]
是的,它们实际上是一样的。
是的,但是 multinomial
更快。
$ python -m timeit 'import numpy as np' 'np.nonzero(np.random.multinomial(1, [1/6.]*6, size=6))[1]'
50000 loops, best of 5: 4.84 usec per loop
$ python -m timeit 'import numpy as np' 'np.random.choice(6, size=6, replace=True, p=[1/6.]*6)'
20000 loops, best of 5: 15.9 usec per loop