如果您要选择以下三种方法中的一种,使用零初始化数组,那么您会选择哪一种,以及为什么选择
my_arr_1 = np.full(size, 0) 或
my_arr_2 = np.zeros(size)或
my_arr_3 = np.empty(size)
my_arr_3[:] = 0发布于 2014-10-06 09:27:11
我会使用np.zeros,因为它的名字。我不会用第三个成语,因为
np.zeros仍然是最快的选项:>>> %timeit np.zeros(1e6)
1000 loops, best of 3: 804 µs per loop
>>> %timeit np.full(1e6, 0)
1000 loops, best of 3: 816 µs per loop
>>> %timeit a = np.empty(1e6); a[:] = 0
1000 loops, best of 3: 919 µs per loop与@John的结果比较的更大的数组:
>>> %timeit np.zeros(1e8)
100000 loops, best of 3: 9.66 µs per loop
>>> %timeit np.full(1e8, 0)
1 loops, best of 3: 614 ms per loop
>>> %timeit a = np.empty(1e8); a[:] = 0
1 loops, best of 3: 229 ms per loop发布于 2014-10-06 09:26:23
绝对是np.zeros。这样做不仅是最惯用和最常见的方式,而且也是迄今为止最快的:
In [1]: size=100000000
In [3]: %timeit np.full(size, 0)
1 loops, best of 3: 344 ms per loop
In [4]: %timeit np.zeros(size)
100000 loops, best of 3: 8.75 µs per loop
In [5]: %timeit a = np.empty(size); a[:] = 0
1 loops, best of 3: 322 ms per loop发布于 2018-09-06 10:43:52
如果要将数组初始化为零,np.zeros要快得多。如果只想初始化一个给定形状和类型的数组,而不关心数组中的初始条目,那么np.empty会稍微快一些。
请参见以下基本测试结果:
>>%timeit np.zeros(1000000)
7.89 µs ± 282 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
>>%timeit np.empty(1000000)
7.84 µs ± 332 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)https://stackoverflow.com/questions/26213199
复制相似问题