code: def test_nd_array_narrow(self, shape, ctx_name):
      self.try_to_set_ctx(ctx_name)
  
      x = shape[0]
      s = x // 10
      a = nn.NdArray(shape)
      a.fill(3.0)
      b = a.narrow(0, 0, 4 * s)
      b.fill(5.0)
      c = a.narrow(0, 6 * s, 4 * s)
      c.fill(7.0)
      d = c.narrow(0, 2 * s, 2 * s)
      d.fill(9.0)
      b += c
  
      ref_a = np.zeros(shape, dtype=np.float32)
      ref_a.fill(3.0)
      ref_b = ref_a[0 : 4 * s]
      ref_b.fill(5.0)
      ref_c = ref_a[6 * s : 10 * s]
      ref_c.fill(7.0)
      ref_d = ref_c[2 * s : 4 * s]
      ref_d.fill(9.0)
      ref_b += ref_c
  
      assert a.shape == tuple(shape)
  
      assert (a.data == ref_a).all()
      assert (b.data == ref_b).all()
      assert (c.data == ref_c).all()
      assert (d.data == ref_d).all()
  
      assert a.data.dtype == ref_a.dtype
      assert b.data.dtype == ref_b.dtype
      assert c.data.dtype == ref_c.dtype
      assert d.data.dtype == ref_d.dtype
  
imports: import numpy
  import nnabla
  import pytest
  from nnabla.ext_utils import get_extension_context
  import nnabla.functions
label_desc: Use image node_id 4 for calling the TestNdArrayNarrow obj's underlying member method code with example usage: obj.test_nd_array_narrow(shape, ctx_name) without return types