code: def save(self, path, group=None):
          
  
          ext = _os.path.splitext(path)[1]
          if ext == '.npy':
              _numpy.save(path, self.numpy())
          elif ext == '.txt':
              if self.kind == 'real':
                  _numpy.savetxt(path, self.numpy())
              elif self.kind == 'complex':
                  output = _numpy.vstack((self.numpy().real,
                                          self.numpy().imag)).T
                  _numpy.savetxt(path, output)
          elif ext == '.hdf':
              key = 'data' if group is None else group
              f = h5py.File(path)
              f.create_dataset(key, data=self.numpy(), compression='gzip',
                               compression_opts=9, shuffle=True)
          else:
              raise ValueError('Path must end with .npy, .txt, or .hdf')
docs: Save array to a Numpy .npy, hdf, or text file. When saving a complex array as
          text, the real and imaginary parts are saved as the first and second
          column respectively. When using hdf format, the data is stored
          as a single vector, along with relevant attributes.
  
          Parameters
          ----------
          path: string
              Destination file path. Must end with either .hdf, .npy or .txt.
              
          group: string 
              Additional name for internal storage use. Ex. hdf storage uses
              this as the key value.
  
          Raises
          ------
          ValueError
              If path does not end in .npy or .txt.