parameters: (data, axis=None, out=None)
docstring: Return ndarray normalized by length, i.e. eucledian norm, along axis.
  
      >>> v0 = numpy.random.random(3)
      >>> v1 = unit_vector(v0)
      >>> numpy.allclose(v1, v0 / numpy.linalg.norm(v0))
      True
      >>> v0 = numpy.random.rand(5, 4, 3)
      >>> v1 = unit_vector(v0, axis=-1)
      >>> v2 = v0 / numpy.expand_dims(numpy.sqrt(numpy.sum(v0*v0, axis=2)), 2)
      >>> numpy.allclose(v1, v2)
      True
      >>> v1 = unit_vector(v0, axis=1)
      >>> v2 = v0 / numpy.expand_dims(numpy.sqrt(numpy.sum(v0*v0, axis=1)), 1)
      >>> numpy.allclose(v1, v2)
      True
      >>> v1 = numpy.empty((5, 4, 3), dtype=numpy.float64)
      >>> unit_vector(v0, axis=1, out=v1)
      >>> numpy.allclose(v1, v2)
      True
      >>> list(unit_vector([]))
      []
      >>> list(unit_vector([1.0]))
      [1.0]
docstring_summary: Return ndarray normalized by length, i.e. eucledian norm, along axis.
docstring_tokens: Return ndarray normalized by length i . e . eucledian norm along axis .
function: def unit_vector(data, axis=None, out=None):
      """Return ndarray normalized by length, i.e. eucledian norm, along axis.
  
      >>> v0 = numpy.random.random(3)
      >>> v1 = unit_vector(v0)
      >>> numpy.allclose(v1, v0 / numpy.linalg.norm(v0))
      True
      >>> v0 = numpy.random.rand(5, 4, 3)
      >>> v1 = unit_vector(v0, axis=-1)
      >>> v2 = v0 / numpy.expand_dims(numpy.sqrt(numpy.sum(v0*v0, axis=2)), 2)
      >>> numpy.allclose(v1, v2)
      True
      >>> v1 = unit_vector(v0, axis=1)
      >>> v2 = v0 / numpy.expand_dims(numpy.sqrt(numpy.sum(v0*v0, axis=1)), 1)
      >>> numpy.allclose(v1, v2)
      True
      >>> v1 = numpy.empty((5, 4, 3), dtype=numpy.float64)
      >>> unit_vector(v0, axis=1, out=v1)
      >>> numpy.allclose(v1, v2)
      True
      >>> list(unit_vector([]))
      []
      >>> list(unit_vector([1.0]))
      [1.0]
  
      """
      if out is None:
          data = numpy.array(data, dtype=numpy.float64, copy=True)
          if data.ndim == 1:
              data /= math.sqrt(numpy.dot(data, data))
              return data
      else:
          if out is not data:
              out[:] = numpy.array(data, copy=False)
          data = out
      length = numpy.atleast_1d(numpy.sum(data*data, axis))
      numpy.sqrt(length, length)
      if axis is not None:
          length = numpy.expand_dims(length, axis)
      data /= length
      if out is None:
          return data
function_tokens: def unit_vector ( data , axis = None , out = None ) : if out is None : data = numpy . array ( data , dtype = numpy . float64 , copy = True ) if data . ndim == 1 : data /= math . sqrt ( numpy . dot ( data , data ) ) return data else : if out is not data : out [ : ] = numpy . array ( data , copy = False ) data = out length = numpy . atleast_1d ( numpy . sum ( data * data , axis ) ) numpy . sqrt ( length , length ) if axis is not None : length = numpy . expand_dims ( length , axis ) data /= length if out is None : return data