以下是代码和结果:
python -c "import numpy as np; from timeit import timeit; print('numpy version {}: {:.1f} seconds'.format(np.__version__, timeit('np.random.multinomial(1, [0.1, 0.2, 0.3, 0.4])', number=1000000, globals=globals())))"
Run Code Online (Sandbox Code Playgroud)
numpy version 1.16.6: 1.5 seconds # 10x faster
numpy version 1.18.1: 15.5 seconds
numpy version 1.19.0: 17.4 seconds
numpy version 1.21.4: 15.1 seconds
Run Code Online (Sandbox Code Playgroud)
值得注意的是,使用固定随机种子,不同 numpy 版本的输出是相同的
python -c "import numpy as np; np.random.seed(0); print(np.__version__); print(np.random.multinomial(1, [0.1, 0.2, 0.3, 0.4], size=10000))" /tmp/tt
Run Code Online (Sandbox Code Playgroud)
关于为什么 1.16.6 之后的 numpy 版本慢 10 倍有什么建议吗?
我们已经将 pandas 升级到最新版本 1.3.4,需要 1.16.6 之后的 numpy 版本