numpy - Fastest way to create an array in Python -


this question has answer here:

i want create 3d array in python, filled -1.

i tested these methods:

import numpy np l = 200 b = 100 h = 30  %timeit grid = [[[-1 x in range(l)] y in range(b)] z in range(h)] 1 loops, best of 3: 458 ms per loop  %timeit grid = -1 * np.ones((l, b, h), dtype=np.int) 10 loops, best of 3: 35.5 ms per loop  %timeit grid = np.zeros((l, b, h), dtype=np.int) - 1 10 loops, best of 3: 31.7 ms per loop  %timeit grid = -1.0 * np.ones((l, b, h), dtype=np.float32) 10 loops, best of 3: 42.1 ms per loop  %%timeit grid = np.empty((l,b,h)) grid.fill(-1.0) 100 loops, best of 3: 13.7 ms per loop 

so obviously, last 1 fastest. has faster method or @ least less memory intensive? because runs on raspberrypi.

the thing can think add of these methods faster dtype argument chosen take little memory possible.

assuming need no more space int8, method suggested @rutgerkassies in comments took long on system:

%timeit grid = np.full((l, b, h), -1, dtype=int8) 1000 loops, best of 3: 286 µs per loop 

for comparison, not specifying dtype (defaulting int32) took 10 times longer same method:

%timeit grid = np.full((l, b, h), -1) 100 loops, best of 3: 3.61 ms per loop 

your fastest method fast np.full (sometimes beating it):

%%timeit grid = np.empty((l,b,h)) grid.fill(-1) 100 loops, best of 3: 3.51 ms per loop 

or, dtype specified int8,

1000 loops, best of 3: 255 µs per loop 

edit: cheating, but, well...

%timeit grid = np.lib.stride_tricks.as_strided(np.array(-1, dtype=int8), (l, b, h), (0, 0, 0)) 100000 loops, best of 3: 12.4 per loop 

all that's happening here begin array of length one, np.array([-1]), , fiddle stride lengths grid looks array required dimensions.

if need actual array, can use grid = grid.copy(); makes creation of grid array fast quickest approaches suggested on elsewhere page.


Comments

Popular posts from this blog

php - Submit Form Data without Reloading page -

linux - Rails running on virtual machine in Windows -

php - $params->set Array between square bracket -