code: def concatenate(
      arrays, /, *, axis=0, out=None, dtype=None, casting="same_kind"
  ):
      if dtype is not None:
          out_dtype = ivy.as_ivy_dtype(dtype)
      else:
          out_dtype = ivy.dtype(arrays[0])
          for i in arrays:
              out_dtype = ivy.as_ivy_dtype(
                  np_frontend.promote_numpy_dtypes(i.dtype, out_dtype)
              )
      return ivy.concat(arrays, axis=axis, out=out).astype(
          out_dtype, copy=False
      )
  
file_path: ivy/ivy/functional/frontends/numpy/manipulation_routines/joining_arrays.py
imports: import ivy
  from ivy.functional.frontends.numpy.func_wrapper import to_ivy_arrays_and_back, handle_numpy_casting, handle_numpy_dtype, from_zero_dim_arrays_to_scalar, handle_numpy_out
  import ivy.functional.frontends.numpy
label_desc: Use image node_id 2 for calling a global function with example usage: concatenate() and returns: ivy