code: def _at(self, idx):
          
          handle = NDArrayHandle()
          if idx < 0:
              length = self.shape[0]
              idx += length
              if idx < 0:
                  raise IndexError('index %d is out of bounds for axis 0 with size %d'
                                   % (idx-length, length))
          check_call(_LIB.MXNDArrayAt(
              self.handle, mx_uint(idx), ctypes.byref(handle)))
          return NDArray(handle=handle, writable=self.writable)
docs: Returns a view of the array sliced at `idx` in the first dim.
          This is called through ``x[idx]``.
  
          Parameters
          ----------
          idx : int
              index for slicing the `NDArray` in the first dim.
  
          Returns
          -------
          NDArray
              `NDArray` sharing the memory with the current one sliced at `idx` in the first dim.
  
          Examples
          --------
          >>> a = mx.nd.array([[1,2], [3, 4]])
          >>> a[1].asnumpy()
          array([ 3.,  4.], dtype=float32)
          >>> b = mx.nd.array([1, 2, 3, 4])
          >>> b[0].asnumpy()
          array([ 1.], dtype=float32)