code: def _initial_imputation(self, X):
          
          # TODO: change False to "allow-nan"
          if is_scalar_nan(self.missing_values):
              force_all_finite = False # "allow-nan"
          else:
              force_all_finite = True
  
          X = check_array(X, dtype=FLOAT_DTYPES, order="F",
                          force_all_finite=force_all_finite)
          _check_inputs_dtype(X, self.missing_values)
  
          mask_missing_values = _get_mask(X, self.missing_values)
          if self.initial_imputer_ is None:
              self.initial_imputer_ = _SimpleImputer(
                                              missing_values=self.missing_values,
                                              strategy=self.initial_strategy)
              X_filled = self.initial_imputer_.fit_transform(X)
          else:
              X_filled = self.initial_imputer_.transform(X)
  
          valid_mask = np.flatnonzero(np.logical_not(
              np.isnan(self.initial_imputer_.statistics_)))
          Xt = X[:, valid_mask]
          mask_missing_values = mask_missing_values[:, valid_mask]
  
          return Xt, X_filled, mask_missing_values
docs: Perform initial imputation for input X.
  
          Parameters
          ----------
          X : ndarray, shape (n_samples, n_features)
              Input data, where "n_samples" is the number of samples and
              "n_features" is the number of features.
  
          Returns
          -------
          Xt : ndarray, shape (n_samples, n_features)
              Input data, where "n_samples" is the number of samples and
              "n_features" is the number of features.
  
          X_filled : ndarray, shape (n_samples, n_features)
              Input data with the most recent imputations.
  
          mask_missing_values : ndarray, shape (n_samples, n_features)
              Input data's missing indicator matrix, where "n_samples" is the
              number of samples and "n_features" is the number of features.