0 494999th, , jth for j in xrange(Nt-i). , , 3D slice , . , , 2D-, axis =(1,2).
, -
, :
m,n,r = array.shape
out = array.reshape(m,2,-1,r).prod(1).sum()
-
:
def vectorized_app(array):
m,n,r = array.shape
return array.reshape(m,2,-1,r).prod(1).sum()
def org_app(array):
m,n,r = array.shape
Nt = n
i = Nt/2
summed = 0
for k in xrange(m):
for j in xrange(Nt-i):
vec1 = array[k][j]
vec2 = array[k][j+i]
summed += np.dot(vec1,vec2)
return summed
Runtimes:
In [94]: array = np.random.rand(81,9900,3)
In [95]: org_app(array)
Out[95]: 300450.24128635536
In [96]: vectorized_app(array)
Out[96]: 300450.24128635362
In [97]: %timeit org_app(array)
1 loops, best of 3: 1.29 s per loop
In [98]: %timeit vectorized_app(array)
100 loops, best of 3: 16.1 ms per loop