对单个 int 使用 np.random 不好的做法吗?

Is using np.random bad practice for a single int?

根据我最近发布的 的评论,

Any reason you are using numpy.random instead of the standard random module?

@Gulzar "Any reason not to?" - Yes: ModuleNotFoundError: No module named 'numpy'. It's bad practice to require an external library for something that can be done equally well using the standard library. Actually, the standard library would make the program slightly shorter (import random; random.randint(low_limit, high_limit + 1)).

我想更好地理解为什么使用 np.random 比标准随机差那么多?

在这种情况下我更喜欢 np.random 的原因:

  1. 我的代码库是基于 numpy 的,从来没有遇到过问题。可以就pip install吧。
  2. 非常普遍。

在可以使用标准的情况下使用 numpy 真的有什么错误吗?从什么时候开始使用外部库是不好的做法(在发布这个问题时有 4 个赞成票)?

我认为比标准差的示例:

  1. 不可读
  2. 难以融入您的代码

也许我应该在该列表中添加一些项目?

我希望以后避免不良做法:)


我希望我把这个问题做得足够具体,不要被认为是基于意见。
如果问题仍然不够具体,请提出改进​​问题而不是关闭问题。

所有必须安装但用户可能尚未安装的东西都是成本。同样,import numpy 可能需要几秒钟(每个程序 one-time 的成本 运行,但这可能非常烦人,特别是如果有人试图 运行 您的程序多次 运行 shell 脚本)。

如果您的程序逻辑的其余部分已经需要 Numpy,那么请继续。这里的费用都是one-time的费用;一旦你被迫付钱给他们,就是这样。

ipython 会话中 numpy 已经导入:

In [1]: import random
In [2]: random.randint(0,100)
Out[2]: 89
In [3]: timeit random.randint(0,100)
1.5 µs ± 2.05 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
In [4]: timeit np.random.randint(0,100)
5.46 µs ± 121 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
In [5]: timeit np.random.randint(0,100,1)[0]
23.3 µs ± 1.32 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)