code: def test_from_3d_numpy_to_multi_index(
      n_instances, n_columns, n_timepoints
  ):
      """Test from_3d_numpy_to_multi_index for correctness."""
      array = np.random.normal(
          size=(n_instances, n_columns, n_timepoints)
      )
  
      mi_df = from_3d_numpy_to_multi_index(
          array, instance_index=None, time_index=None, column_names=None
      )
  
      col_names = ["column_" + str(i) for i in range(n_columns)]
      mi_df_named = from_3d_numpy_to_multi_index(
          array,
          instance_index="case_id",
          time_index="reading_id",
          column_names=col_names,
      )
  
      assert isinstance(mi_df, pd.DataFrame)
      assert mi_df.index.names == ["instances", "timepoints"]
      assert (
          mi_df.columns == ["var_" + str(i) for i in range(n_columns)]
      ).all()
  
      assert isinstance(mi_df_named, pd.DataFrame)
      assert mi_df_named.index.names == ["case_id", "reading_id"]
      assert (mi_df_named.columns == col_names).all()
  
imports: import numpy
  import pandas
  import pytest
  from sktime.datasets import generate_example_long_table, make_multi_index_dataframe
  from sktime.datatypes._adapter import convert_from_multiindex_to_listdataset
  from sktime.datatypes._panel._check import are_columns_nested, is_nested_dataframe
  from sktime.datatypes._panel._convert import from_2d_array_to_nested, from_3d_numpy_to_2d_array, from_3d_numpy_to_multi_index, from_3d_numpy_to_nested, from_long_to_nested, from_multi_index_to_3d_numpy, from_multi_index_to_nested, from_nested_to_2d_array, from_nested_to_3d_numpy, from_nested_to_long, from_nested_to_multi_index
  from sktime.utils._testing.panel import make_classification_problem
  from sktime.utils.validation._dependencies import _check_soft_dependencies
label_desc: Use image node_id 7 for calling a global function with example usage: test_from_3d_numpy_to_multi_index(n_instances, n_columns, n_timepoints) without return types