What's the fastest way to loop over a 3d numpy array if I need to know the indeces.
... some sort of loop ...
do something with each element that requires a knowledge of i,j,k.
E.g.
for i in range(N):
for j in range(N):
for k in range(N):
index = # something that depends on i,j,k
B[index] = A[i][j][k]**2
The actual loop looks like this:
for z in range(Ngrid):
kz = 2*pi/LMAX*(z - Ngrid/2)
for y in range(Ngrid):
ky = 2*pi/LMAX*(y - Ngrid/2)
for x in range(Ngrid):
kx = 2*pi/LMAX*(x - Ngrid/2)
kk = sqrt(kx**2 + ky**2 + kz**2)
bind = int((kk - kmin)/dk)
if bind >= Nk:
continue
delk = delta_k[x][y][z]
Pk[bind] += (delk.real**2 + delk.imag**2)/2
Numk[bind] += 1