I’d use np.zeros
, because of its name. I would never use the third idiom because
-
it takes two statements instead of a single expression and
-
it’s harder for the NumPy folks to optimize. In fact, in NumPy
1.10,np.zeros
is still the fastest option, despite all the optimizations to indexing:
>>> %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
Bigger array for comparison with @John Zwinck’s results:
>>> %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