code: def normalize(self, normalize_numpy, mask_numpy=None):
      normalize_numpy = normalize_numpy.astype(float)
  
      if mask_numpy is not None:
          vol_mean = np.mean(normalize_numpy[mask_numpy > 0])
          vol_std = np.std(normalize_numpy[mask_numpy > 0])
          normalize_numpy = (normalize_numpy - vol_mean) / vol_std
          normalize_numpy[mask_numpy == 0] = 0
      elif self.mask_zeros:
          idx_nonzeros = np.nonzero(normalize_numpy)
          vol_mean = np.mean(normalize_numpy[idx_nonzeros])
          vol_std = np.std(normalize_numpy[idx_nonzeros])
          normalize_numpy[idx_nonzeros] = (
              normalize_numpy[idx_nonzeros] - vol_mean
          ) / vol_std
      else:
          vol_mean = np.mean(normalize_numpy)
          vol_std = np.std(normalize_numpy)
          normalize_numpy = (normalize_numpy - vol_mean) / vol_std
  
      return normalize_numpy
  
imports: import subprocess
  import os
  import numpy
  from deepneuro.preprocessing.preprocessor import Preprocessor
  from deepneuro.utilities.conversion import read_image_files
  from deepneuro.utilities.util import add_parameter, quotes
label_desc: Use image node_id 2 for calling the ZeroMeanNormalization obj's underlying member method code with example usage: obj.normalize(normalize_numpy, mask_numpy) and returns: normalize_numpy