'Tuple of array dimensions.
Examples
>>> x = mx.nd.array([1, 2, 3, 4])
>>> x.shape
(4L,)
>>> y = mx.nd.zeros((2, 3, 4))
>>> y.shape
(2L, 3L, 4L)'

@property
def shape(self):

    ndim = mx_uint()
    pdata = ctypes.POINTER(mx_uint)()
    check_call(_LIB.MXNDArrayGetShape(self.handle, ctypes.byref(ndim), ctypes.byref(pdata)))
    return tuple(pdata[:ndim.value])
