code: def vector_norm(data, axis=None, out=None):
      
      data = np.array(data, dtype=np.float64, copy=True)
      if out is None:
          if data.ndim == 1:
              return math.sqrt(np.dot(data, data))
          data *= data
          out = np.atleast_1d(np.sum(data, axis=axis))
          np.sqrt(out, out)
          return out
      else:
          data *= data
          np.sum(data, axis=axis, out=out)
          np.sqrt(out, out)
docs: Return length, i.e. Euclidean norm, of ndarray along axis.
  
      >>> v = np.random.random(3)
      >>> n = vector_norm(v)
      >>> np.allclose(n, np.linalg.norm(v))
      True
      >>> v = np.random.rand(6, 5, 3)
      >>> n = vector_norm(v, axis=-1)
      >>> np.allclose(n, np.sqrt(np.sum(v*v, axis=2)))
      True
      >>> n = vector_norm(v, axis=1)
      >>> np.allclose(n, np.sqrt(np.sum(v*v, axis=1)))
      True
      >>> v = np.random.rand(5, 4, 3)
      >>> n = np.empty((5, 3))
      >>> vector_norm(v, axis=1, out=n)
      >>> np.allclose(n, np.sqrt(np.sum(v*v, axis=1)))
      True
      >>> vector_norm([])
      0.0
      >>> vector_norm([1])
      1.0