title: Numpy: increment elements of an array given the indices required to increment
body: <p>I am trying to turn a second order tensor into a binary third order tensor. Given a second order tensor as a m x n numpy array: A, I need to take each element value: x, in A and replace it with a vector: v, with dimensions equal to the maximum value of A, but with a value of 1 incremented at the index of v corresponding to the value x (i.e. v[x] = 1). I have been following this question: <a href="https://stackoverflow.com/questions/15920070/increment-given-indices-in-a-matrix">Increment given indices in a matrix</a>, which addresses producing an array with increments at indices given by 2 dimensional coordinates.  I have been reading the answers and trying to use np.ravel_multi_index() and np.bincount() to do the same but with 3 dimensional coordinates, however I keep on getting a ValueError: "invalid entry in coordinates array". This is what I have been using:</p>
  
  <pre><code>def expand_to_tensor_3(array):
      (x, y) = array.shape
      (a, b) = np.indices((x, y))
      a = a.reshape(x*y)
      b = b.reshape(x*y)
      tensor_3 = np.bincount(np.ravel_multi_index((a, b, array.reshape(x*y)), (x, y, np.amax(array))))
      return tensor_3
  </code></pre>
  
  <p>If you know what is wrong here or know an even better method to accomplish my goal, both would be really helpful, thanks.</p>