code: def ensemble_np(args, np_files, save_np=None):
      preds = []
      for np_file in np_files:
          pred = np.load(np_file)
          print(np_file, pred.shape)
          preds.append(pred)
  
      y_pred_test = generate_preds(
          np.mean(preds, 0),
          (settings.ORIG_H, settings.ORIG_W),
          args.pad_mode,
      )
  
      if save_np is not None:
          np.save(save_np, np.mean(preds, 0))
  
      meta = get_test_loader(
          args.batch_size,
          index=0,
          dev_mode=False,
          pad_mode=args.pad_mode,
      ).meta
  
      submission = create_submission(meta, y_pred_test)
      submission.to_csv(args.sub_file, index=None, encoding="utf-8")
  
imports: import os
  import glob
  import argparse
  import numpy
  import torch
  import torch.optim
  import torch.nn.functional
  import settings
  from loader import get_test_loader, add_depth_channel
  from models import UNetResNetV4, UNetResNetV5, UNetResNetV6, UNet7, UNet8
  from postprocessing import crop_image, binarize, resize_image
  from metrics import intersection_over_union, intersection_over_union_thresholds
  from utils import create_submission
label_desc: Use image node_id 4 for calling a global function with example usage: ensemble_np(args, np_files, save_np) without return types