title: Square root of all values in numpy array, preserving sign
body: <p>I'd like to take the square root of every value in a numpy array, while preserving the sign of the value (and not returning complex numbers when negative) - a signed square root.</p>
  
  <p>The code below demonstrates the desired functionality w/ lists, but is not taking advantage of numpy's optimized array manipulating superpowers.</p>
  
  <pre><code>def signed_sqrt(list):
      new_list = []
      for v in arr:
          sign = 1
          if v &lt; 0:
              sign = -1
          sqrt = cmath.sqrt(abs(v))
          new_v = sqrt * sign
          new_list.append(new_v)
  
  
  list = [1., 81., -7., 4., -16.]
  list = signed_sqrt(list)
  # [1., 9., -2.6457, 2. -4.]
  </code></pre>
  
  <p>For some context, I'm computing the Hellinger Kernel for [thousands of] image comparisons.</p>
  
  <p>Any smooth way to do this with numpy? Thanks.</p>