0
在下列情況下,爲什麼訪問arr
的速度明顯快於arr[:]
或arr[::]
。訪問一個numpy數組'arr'比'arr [:]'明顯更快'
In [1]: import numpy as np
In [2]: arr = np.random.randint(0, 255, (512, 512))
In [3]: %timeit arr
30.8 ns ± 2.43 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
In [4]: %timeit arr[:]
204 ns ± 0.588 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
In [5]: %timeit arr[::]
204 ns ± 1.35 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
In [8]: np.all(arr == arr[:])
Out[8]: True
In [9]: np.all(arr == arr[::])
Out[9]: True
並非所有上述方法訪問內存中的連續塊元素?訪問存儲器arr[::2]
中的不連續塊的速度比arr[:]
慢,但與a
和a[:]
之間的差異相比只有很小的差距。
In [10]: %timeit arr[::2]
221 ns ± 2.96 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
您的評論也適用於'arr [:: 2]'。由於解析索引需要額外的工作,因此速度較慢。 – Eric