python 为什么np.random.choice比np.random.randint花的时间要长?

b4lqfgs4  于 2023-04-19  发布在  Python
关注(0)|答案(1)|浏览(214)

我一直在阅读np.random.choice比np.random.randint快,但是当比较

import numpy as np

for i in range(100000):
    np.random.choice(100)

import numpy as np

for i in range(100000):
    np.random.randint(100)

random.randint明显快一些。这两者之间有什么区别?

mnemlml8

mnemlml81#

在您的示例中,np.random.choice较慢,因为它执行的工作较多。引用其文档字符串

...

Parameters
----------
a : 1-D array-like or int
    If an ndarray, a random sample is generated from its elements.
    If an int, the random sample is generated as if it were ``np.arange(a)``
...

因此,当你传递一个np.random.choice(100)中的整数时,它会构造一个数组并从数组中选择一个元素。
vs. np.random.randint(100),它从0和100之间的整数的离散均匀分布的分布中返回随机值。
我不知道为什么random.choice会有这种行为,可能是一些历史原因。但无论如何,我建议只向random.choice传递python列表或numpy数组之类的对象。
同样,你可以在Python解释器中很容易地查看Python中的文档字符串。

>>> help(np.random.choice)

相关问题