code: def test_array_feature_extractor(self):
      X = make_tensor_value_info("X", TensorProto.FLOAT, [None, None])
      A = make_tensor_value_info("A", TensorProto.INT64, [None])
      Y = make_tensor_value_info("Y", TensorProto.FLOAT, [None, None])
      node1 = make_node(
          "ArrayFeatureExtractor",
          ["X", "A"],
          ["Y"],
          domain="ai.onnx.ml",
      )
      graph = make_graph([node1], "ml", [X, A], [Y])
      onx = make_model_gen_version(graph, opset_imports=OPSETS)
      check_model(onx)
      x = np.arange(12).reshape((3, 4)).astype(np.float32)
  
      expected = np.array([[0, 4, 8]], dtype=np.float32).T
      feeds = {"X": x, "A": np.array([0], dtype=np.int64)}
      self._check_ort(onx, feeds)
      sess = ReferenceEvaluator(onx)
      got = sess.run(None, feeds)[0]
      assert_allclose(expected, got)
  
      expected = np.array([[0, 4, 8], [1, 5, 9]], dtype=np.float32).T
      feeds = {"X": x, "A": np.array([0, 1], dtype=np.int64)}
      self._check_ort(onx, feeds)
      sess = ReferenceEvaluator(onx)
      got = sess.run(None, feeds)[0]
      assert_allclose(expected, got)
  
      expected = np.array(
          [
              [0, 4, 8],
              [1, 5, 9],
              [0, 4, 8],
              [1, 5, 9],
              [0, 4, 8],
              [1, 5, 9],
          ],
          dtype=np.float32,
      ).T
      feeds = {
          "X": x,
          "A": np.array([0, 1, 0, 1, 0, 1], dtype=np.int64),
      }
      self._check_ort(onx, feeds)
      sess = ReferenceEvaluator(onx)
      got = sess.run(None, feeds)[0]
      assert_allclose(expected, got)
  
imports: import unittest
  from functools import wraps
  from os import getenv
  import numpy
  from numpy.testing import assert_allclose
  from parameterized import parameterized
  from onnx import ONNX_ML, TensorProto, TypeProto, ValueInfoProto
  from onnx.checker import check_model
  from onnx.defs import onnx_opset_version
  from onnx.helper import make_graph, make_model_gen_version, make_node, make_opsetid, make_tensor, make_tensor_value_info
  from onnx.reference import ReferenceEvaluator
label_desc: Use image node_id 4 for calling the TestReferenceEvaluatorAiOnnxMl obj's underlying member method code with example usage: obj.test_array_feature_extractor() without return types