code: def register(self, params, target):
          
          x = self._as_array(params)
          if x in self:
              raise KeyError('Data point {} is not unique'.format(x))
  
          # Insert data into unique dictionary
          self._cache[_hashable(x.ravel())] = target
  
          self._params = np.concatenate([self._params, x.reshape(1, -1)])
          self._target = np.concatenate([self._target, [target]])
docs: Append a point and its target value to the known data.
  
          Parameters
          ----------
          x : ndarray
              a single point, with len(x) == self.dim
  
          y : float
              target function value
  
          Raises
          ------
          KeyError:
              if the point is not unique
  
          Notes
          -----
          runs in ammortized constant time
  
          Example
          -------
          >>> pbounds = {'p1': (0, 1), 'p2': (1, 100)}
          >>> space = TargetSpace(lambda p1, p2: p1 + p2, pbounds)
          >>> len(space)
          0
          >>> x = np.array([0, 0])
          >>> y = 1
          >>> space.add_observation(x, y)
          >>> len(space)
          1