title: Vectorize a numpy.argmin search with a variable range per matrix row
body: <p>Is there a way to get rid of the loop in the code below and replace it with vectorized operation?</p>
  
  <p>Given a data matrix, for each row I want to find the index of the minimal value that fits within ranges defined (per row) in a separate array.</p>
  
  <p>Here's an example:</p>
  
  <pre><code>import numpy as np
  np.random.seed(10)
  
  # Values of interest, for this example a random 6 x 100 matrix
  data = np.random.random((6,100))
  
  # For each row, define an inclusive min/max range
  ranges = np.array([[0.3, 0.4],
                     [0.35, 0.5],
                     [0.45, 0.6],
                     [0.52, 0.65],
                     [0.6,  0.8],
                     [0.75,  0.92]])
  
  
  # For each row, find the index of the minimum value that fits inside the given range
  result = np.zeros(6).astype(np.int)
  for i in xrange(6):
      ind = np.where((ranges[i][0] &lt;= data[i]) &amp; (data[i] &lt;= ranges[i][1]))[0]
      result[i] = ind[np.argmin(data[i,ind])]
  
  print result
  # Result: [35  8 22  8 34 78]
  
  print data[np.arange(6),result]
  # Result: [ 0.30070006  0.35065639  0.45784951  0.52885388  0.61393513  0.75449247]
  </code></pre>