god*_*ygo 5 python windows arrays memory-management numpy
有人可以解释为什么我在数组分配期间获得如此奇怪和不同的时间,结果是分配稍大一些数组并切片它比分配所需大小的数组要快25倍:
%timeit arr = np.zeros((360, 360))
207 µs ± 4.8 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%%timeit
arr = np.zeros((362, 362))
arr = arr[:360]
8.4 µs ± 651 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
Run Code Online (Sandbox Code Playgroud)
是否有一些普遍背后的东西,或者是一些与Windows相关的问题?虽然这种情况特定(360, 360) size在我的电脑附近,但我不知道它是否会出现在其他地方.
编辑:虽然这个问题被标记为重复,但该问题的答案并不能完全解释问题:
%timeit -n10 -r10 arr = np.zeros((361, 361))
243 µs ± 56.6 µs per loop (mean ± std. dev. of 10 runs, 10 loops each)
%timeit -n10 -r10 arr = np.zeros((362, 362))
6.82 µs ± 539 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
Run Code Online (Sandbox Code Playgroud)
与zeros有25-35x回归,但随着empty故事是在相反的方向上与2-5x:
%timeit -n10 -r10 arr = np.empty((361, 361))
2.49 µs ± 1.02 µs per loop (mean ± std. dev. of 10 runs, 10 loops each)
%timeit -n10 -r10 arr = np.empty((362, 362))
11.9 µs ± 1.58 µs per loop (mean ± std. dev. of 10 runs, 10 loops each)
Run Code Online (Sandbox Code Playgroud)
Windows 7
Python 3.6.3
numpy 1.13.3
| 归档时间: |
|
| 查看次数: |
40 次 |
| 最近记录: |