code: def interpolate_nans_1d(x, y, kind='linear'):
      
      x_sort_args = np.argsort(x)
      x = x[x_sort_args]
      y = y[x_sort_args]
      nans = np.isnan(y)
      if kind == 'linear':
          y[nans] = np.interp(x[nans], x[~nans], y[~nans])
      elif kind == 'log':
          y[nans] = np.interp(np.log(x[nans]), np.log(x[~nans]), y[~nans])
      else:
          raise ValueError('Unknown option for kind: {0}'.format(str(kind)))
      return y[x_sort_args]
docs: Interpolate NaN values in y.
  
      Interpolate NaN values in the y dimension. Works with unsorted x values.
  
      Parameters
      ----------
      x : array-like
          1-dimensional array of numeric x-values
      y : array-like
          1-dimensional array of numeric y-values
      kind : string
          specifies the kind of interpolation x coordinate - 'linear' or 'log', optional.
          Defaults to 'linear'.
  
      Returns
      -------
          An array of the y coordinate data with NaN values interpolated.