title: Parallel array manipulations in numpy
body: <p>I have a code in which I need to handle some big numpy arrays. For example I have a 3D array <code>A</code> and I need to construct another 3d array <code>B</code> using the elements of <code>A</code>. However all the elements of <code>B</code> are independent of each other. Example:</p>
  
  <pre><code>for i in np.arange(Nx):
    for j in np.arange(Ny):
     for k in np.arange(Nz):
         B[i][j][k] = A[i+1][j][k]*np.sqrt(A[i][j-1][k-1])
  </code></pre>
  
  <p>So it will speed up immensely if I can construct the <code>B</code> array parallely. What is the simplest way to do this in python?</p>
  
  <p>I also have similar matrix operations like normalizing each row of a 2D array. Example</p>
  
  <pre><code>for i in np.arange(Nx):
     f[i,:] = f[i,:]/np.linalg.norm(f[i,:])
  </code></pre>
  
  <p>This will also speed up if it runs parallely for each row. How can it be done?</p>