code: def unitize(vectors,
              check_valid=False,
              threshold=None):
      
      # make sure we have a numpy array
      vectors = np.asanyarray(vectors)
  
      # allow user to set zero threshold
      if threshold is None:
          threshold = TOL_ZERO
  
      if len(vectors.shape) == 2:
          # for (m, d) arrays take the per- row unit vector
          # using sqrt and avoiding exponents is slightly faster
          # also dot with ones is faser than .sum(axis=1)
          norm = np.sqrt(np.dot(vectors * vectors,
                                [1.0] * vectors.shape[1]))
          # non-zero norms
          valid = norm > threshold
          # in-place reciprocal of nonzero norms
          norm[valid] **= -1
          # tile reciprocal of norm
          tiled = np.tile(norm, (vectors.shape[1], 1)).T
          # multiply by reciprocal of norm
          unit = vectors * tiled
      elif len(vectors.shape) == 1:
          # treat 1D arrays as a single vector
          norm = np.sqrt((vectors * vectors).sum())
          valid = norm > threshold
          if valid:
              unit = vectors / norm
          else:
              unit = vectors.copy()
      else:
          raise ValueError('vectors must be (n, ) or (n, d)!')
  
      if check_valid:
          return unit[valid], valid
      return unit
docs: Unitize a vector or an array or row- vectors.
  
      Parameters
      ---------
      vectors : (n,m) or (j) float
         Vector or vectors to be unitized
      check_valid :  bool
         If set, will return mask of nonzero vectors
      threshold : float
         Cutoff for a value to be considered zero.
  
      Returns
      ---------
      unit :  (n,m) or (j) float
         Input vectors but unitized
      valid : (n,) bool or bool
          Mask of nonzero vectors returned if `check_valid`