我有一个脚本,生成二维numpy arrays dtype=float和形状的顺序(1e3, 1e6).现在我正在使用np.save并使用np.load数组执行IO操作.但是,每个阵列的这些功能需要几秒钟.是否有更快的方法来保存和加载整个数组(即,不对其内容进行假设并减少它们)?array只要数据保留完全,我就可以在保存之前将s 转换为另一种类型.
我已经检查过为什么 pickle 比 np.save 花费的时间长得多?在发布问题之前。\n从那里的答案,我们可以认为numpy使用ndarrays.
\n但是看看这些实验!
我们测试的功能:
\n\nimport 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)\nRun 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 …Run Code Online (Sandbox Code Playgroud)