code: def _run(self, data, end=None, start=None):  # type: ignore
      ab = self._interval(len(data.shape), start=start, end=end)
      if ab is None:
          return (np.array(data.shape, dtype=np.int64),)
      return (np.array(data.shape[ab[0] : ab[1]], dtype=np.int64),)
  
file_path: onnx/onnx/reference/ops/op_shape.py
imports: from typing import Optional, Tuple
  import numpy
  from onnx.reference.op_run import OpRun
label_desc: Use image node_id 2 for calling the Shape_15 obj's underlying member method code with example usage: obj._run(data, end, start) and returns: np, np