title: Python array 3D to video
body: <p>Is there an easy way to turn a 500x500x60 array into a 60 frame video that saves as an avi? </p>
  
  <p>I managed to get a plt.imshow window to animate with the animate environment. but how can I save this properly? </p>
  
  <pre><code>def animate_cube(cube_array, cut=True, mn=0, sd=0, interval=75, cmap='hot'):
      '''
      animates a python cube for quick visualisation. CANNOT BE SAVED.
  
      INPUT:
          cube_array  : name of 3D numpy array that needs to be animated.
          cut         : trims pixels off of the images edge to remove edge detector effects.
                        Default = True as 0 returns empty array.
          mn          : mean of the cube | Used for contrast
          sd          : std of the cube  | Used for contrast
          interval    : #of ms between each frame.
          cmap        : colormap. Default='hot'
  
      OUTPUT:
          animated window going through the cube.
  
      '''
  
      fig = plt.figure()
      std = np.std(cube_array[0])
      mean = np.mean(cube_array[0])
      if mn==sd and mn==0:
          img = plt.imshow(cube_array[0][cut:-cut, cut:-cut], animated=True, vmax=mean+3*std, vmin=mean-3*std, cmap=cmap)
      else:
          img = plt.imshow(cube_array[0][cut:-cut, cut:-cut], animated=True, vmax=mn+3*sd, vmin=mn-3*sd, cmap=cmap)
  
      def updatefig(i):
          img.set_array(cube_array[i][cut:-cut, cut:-cut])
          return img,
  
      ani = animation.FuncAnimation(fig, updatefig, frames=cube_array.shape[0],                                  interval=interval, blit=True)
      plt.colorbar()
      plt.show()
  </code></pre>