Indexing and slicing return a new varray. Single-element indexing returns a length-1 array, not a 0-D scalar. a = va.array([10, 20, 30, 40, 50], dtype=va.int32) a[0] # varray int32 shape (1,) containing [10] a[1:4] # varray int32 shape (3,) containing [20, 30, 40] a[-1] # varray int32 shape (1,) containing [50] a[::2] # varray int32 shape (3,) containing [10, 30, 50] a[0] == 10 # -> np.array([True]) (comparison returns a numpy bool array)