为什么 pickle 加载 numpy 数组比 numpy 快得多?

Lad*_*lav 5 python numpy pickle

我已经检查过为什么 pickle 比 np.save 花费的时间长得多?在发布问题之前。\n从那里的答案,我们可以认为numpy使用ndarrays.
\n但是看看这些实验!

\n\n

我们测试的功能:

\n\n
import numpy as np\nimport pickle as pkl\n\na = np.random.randn(1000,5)\n\nwith open("test.npy", "wb") as f:\n    np.save(f, a)\n\nwith open("test.pkl", "wb") as f:\n    pkl.dump(a,f)    \n\ndef load_with_numpy(name):\n    for i in range(1000):\n        with open(name, "rb") as f:\n            np.load(f)\ndef load_with_pickle(name):\n    for i in range(1000):\n        with open(name, "rb") as f:\n            pkl.load(f)\n
Run Code Online (Sandbox Code Playgroud)\n\n

实验结果:

\n\n
%timeit load_with_numpy("test.npy")\n296 ms \xc2\xb1 1.6 ms per loop (mean \xc2\xb1 std. dev. of 7 runs, 1 loop each)\n%timeit load_with_pickle("test.pkl")\n28.2 ms \xc2\xb1 994 \xc2\xb5s per loop (mean \xc2\xb1 std. dev. of 7 runs, 10 loops each)\n
Run Code Online (Sandbox Code Playgroud)\n\n

为什么会这样?

\n