title: Python/Numpy - Matrix Multiply a 2D Array and Each Row of another 2D Array
body: <p>What is the best way to do this?</p>
  
  <pre><code>a = 3x3 array
  b = 20x3 array
  c = 20x3 array = some_dot_function(a, b) where:
  c[0] = np.dot(a, b[0])
  c[1] = np.dot(a, b[1])
  c[2] = np.dot(a, b[2])
  ...etc...
  </code></pre>
  
  <p>I know this can be done with a simple python loop or using numpy's apply_along_axis, but I'm wondering if there is any good way to do this entirely within the underlying C code of numpy.  I looked at tensordot and some other functions, but didn't have any luck.  I also tried the following:</p>
  
  <pre><code>c = np.dot(a, b[:, :, np.newaxis]
  #c.shape = (3, 59, 1)
  </code></pre>
  
  <p>This actually ran and gave results that looked approximately right, except that the resulting array is not 20x3.  I may be able to find a way to reshape it into the array I want, but I figured that there must be an easier/cleaner/clearer built-in method that I'm missing?</p>