code: def numpyutf8toarray(input_index: np.ndarray) -> np.ndarray:
      """Decodes utf-8 encoded numpy array to string numpy array.
  
      Args:
          input_index (np.ndarray): utf-8 encoded array
  
      Returns:
          np.ndarray: decoded NumpyArray.
      """
      shape_length = int(input_index[-1])
      shape = tuple(input_index[-(shape_length + 1) : -1])  # noqa
      string_index = input_index[: -(shape_length + 1)]
      index_length = int(string_index[-1])
      index_array = string_index[-(index_length + 1) : -1]  # noqa
      string_array: np.ndarray = string_index[: -(index_length + 1)]
      output_bytes: bytes = string_array.astype(np.uint8).tobytes()
      output_list = []
      last_offset = 0
      for offset in index_array:
          chars = output_bytes[last_offset:offset]
          final_string = chars.decode("utf-8")
          last_offset = offset
          output_list.append(final_string)
      return np.array(output_list).reshape(shape)
  
file_path: PySyft/packages/syft/src/syft/serde/arrow.py
imports: from typing import Union
  from typing import cast
  import numpy
  import pyarrow
  from ..util.experimental_flags import ApacheArrowCompression
  from ..util.experimental_flags import flags
  from .deserialize import _deserialize
  from .serialize import _serialize
label_desc: Use image node_id 3 for calling a global function with example usage: numpyutf8toarray(input_index) and returns: np