title: Python - masking in a for loop?
body: <p>I have three arrays, r_vals, Tgas_vals, and n_vals. They are all numpy arrays of the shape (9998.). The arrays have repeated values and I want to iterate over the unique values of r_vals and find the corresponding values of Tgas_vals, and n_vals so I can use the last two arrays to calculate the weighted average. This is what I have right now:</p>
  
  <pre><code>def calc_weighted_average (r_vals,Tgas_vals,n_vals):
          for r in r_vals:
              mask = r == r_vals
              count = 0
              count += 1
              for t in Tgas_vals[mask]:
                  print (count, np.average(Tgas_vals[mask]*n_vals[mask]))
  
      weighted_average = calc_weighted_average (r_vals,Tgas_vals,n_vals)
  </code></pre>
  
  <p>The problem I am running into is that the function is only looping through once. Did I implement mask incorrectly, or is the problem somewhere else in the for loop?</p>