def test_dynd_view_of_numpy_array(self): # Tests viewing a numpy array as a dynd.array nonnative = self.nonnative a = np.arange(10, dtype=np.int32) n = nd.view(a) self.assertEqual(nd.dtype_of(n), ndt.int32) self.assertEqual(nd.ndim_of(n), a.ndim) self.assertEqual(n.shape, a.shape) self.assertEqual(n.strides, a.strides) """ a = np.arange(12, dtype=(nonnative + 'i4')).reshape(3,4) n = nd.view(a) self.assertEqual(nd.dtype_of(n), ndt.make_byteswap(ndt.int32)) self.assertEqual(nd.ndim_of(n), a.ndim) self.assertEqual(n.shape, a.shape) self.assertEqual(n.strides, a.strides) """ a = np.arange(49, dtype='i1') a = a[1:].view(dtype=np.int32).reshape(4,3) n = nd.view(a) self.assertEqual(nd.dtype_of(n), ndt.make_unaligned(ndt.int32)) self.assertEqual(nd.ndim_of(n), a.ndim) self.assertEqual(n.shape, a.shape) self.assertEqual(n.strides, a.strides) """
def test_dynd_view_of_numpy_array(self): # Tests viewing a numpy array as a dynd.array nonnative = self.nonnative a = np.arange(10, dtype=np.int32) n = nd.view(a) self.assertEqual(nd.dtype_of(n), ndt.int32) self.assertEqual(nd.ndim_of(n), a.ndim) self.assertEqual(n.shape, a.shape) self.assertEqual(n.strides, a.strides) a = np.arange(12, dtype=(nonnative + 'i4')).reshape(3,4) n = nd.view(a) self.assertEqual(nd.dtype_of(n), ndt.make_byteswap(ndt.int32)) self.assertEqual(nd.ndim_of(n), a.ndim) self.assertEqual(n.shape, a.shape) self.assertEqual(n.strides, a.strides) a = np.arange(49, dtype='i1') a = a[1:].view(dtype=np.int32).reshape(4,3) n = nd.view(a) self.assertEqual(nd.dtype_of(n), ndt.make_unaligned(ndt.int32)) self.assertEqual(nd.ndim_of(n), a.ndim) self.assertEqual(n.shape, a.shape) self.assertEqual(n.strides, a.strides) a = np.arange(49, dtype='i1') a = a[1:].view(dtype=(nonnative + 'i4')).reshape(2,2,3) n = nd.view(a) self.assertEqual(nd.dtype_of(n), ndt.make_unaligned(ndt.make_byteswap(ndt.int32))) self.assertEqual(nd.ndim_of(n), a.ndim) self.assertEqual(n.shape, a.shape) self.assertEqual(n.strides, a.strides)
def test_numpy_view_of_dynd_array(self): # Tests viewing a dynd.array as a numpy array nonnative = self.nonnative n = nd.range(10, dtype=ndt.int32) a = np.asarray(n) self.assertEqual(a.dtype, np.dtype(np.int32)) self.assertTrue(a.flags.aligned) self.assertEqual(a.ndim, nd.ndim_of(n)) self.assertEqual(a.shape, n.shape) self.assertEqual(a.strides, n.strides) # Make sure it's a view a[1] = 100 self.assertEqual(nd.as_py(n[1]), 100) n = nd.view(np.arange(12, dtype=(nonnative + 'i4')).reshape(3, 4)) a = np.asarray(n) self.assertEqual(a.dtype, np.dtype(nonnative + 'i4')) self.assertTrue(a.flags.aligned) self.assertEqual(a.ndim, nd.ndim_of(n)) self.assertEqual(a.shape, n.shape) self.assertEqual(a.strides, n.strides) # Make sure it's a view a[1, 2] = 100 self.assertEqual(nd.as_py(n[1, 2]), 100) n = nd.view( np.arange(49, dtype='i1')[1:].view(dtype=np.int32).reshape(4, 3)) a = np.asarray(n) self.assertEqual(a.dtype, np.dtype(np.int32)) self.assertFalse(a.flags.aligned) self.assertEqual(a.ndim, nd.ndim_of(n)) self.assertEqual(a.shape, n.shape) self.assertEqual(a.strides, n.strides) # Make sure it's a view a[1, 2] = 100 self.assertEqual(nd.as_py(n[1, 2]), 100) n = nd.view( np.arange(49, dtype='i1')[1:].view(dtype=(nonnative + 'i4')).reshape( 2, 2, 3)) a = np.asarray(n) self.assertEqual(a.dtype, np.dtype(nonnative + 'i4')) self.assertFalse(a.flags.aligned) self.assertEqual(a.ndim, nd.ndim_of(n)) self.assertEqual(a.shape, n.shape) self.assertEqual(a.strides, n.strides) # Make sure it's a view a[1, 1, 1] = 100 self.assertEqual(nd.as_py(n[1, 1, 1]), 100)
def test_numpy_view_of_dynd_array(self): # Tests viewing a dynd.array as a numpy array nonnative = self.nonnative n = nd.range(10, dtype=ndt.int32) a = np.asarray(n) self.assertEqual(a.dtype, np.dtype(np.int32)) self.assertTrue(a.flags.aligned) self.assertEqual(a.ndim, nd.ndim_of(n)) self.assertEqual(a.shape, n.shape) self.assertEqual(a.strides, n.strides) # Make sure it's a view a[1] = 100 self.assertEqual(nd.as_py(n[1]), 100) n = nd.view(np.arange(12, dtype=(nonnative + 'i4')).reshape(3,4)) a = np.asarray(n) self.assertEqual(a.dtype, np.dtype(nonnative + 'i4')) self.assertTrue(a.flags.aligned) self.assertEqual(a.ndim, nd.ndim_of(n)) self.assertEqual(a.shape, n.shape) self.assertEqual(a.strides, n.strides) # Make sure it's a view a[1,2] = 100 self.assertEqual(nd.as_py(n[1,2]), 100) n = nd.view(np.arange(49, dtype='i1')[1:].view(dtype=np.int32).reshape(4,3)) a = np.asarray(n) self.assertEqual(a.dtype, np.dtype(np.int32)) self.assertFalse(a.flags.aligned) self.assertEqual(a.ndim, nd.ndim_of(n)) self.assertEqual(a.shape, n.shape) self.assertEqual(a.strides, n.strides) # Make sure it's a view a[1,2] = 100 self.assertEqual(nd.as_py(n[1,2]), 100) n = nd.view(np.arange(49, dtype='i1')[1:].view( dtype=(nonnative + 'i4')).reshape(2,2,3)) a = np.asarray(n) self.assertEqual(a.dtype, np.dtype(nonnative + 'i4')) self.assertFalse(a.flags.aligned) self.assertEqual(a.ndim, nd.ndim_of(n)) self.assertEqual(a.shape, n.shape) self.assertEqual(a.strides, n.strides) # Make sure it's a view a[1,1,1] = 100 self.assertEqual(nd.as_py(n[1,1,1]), 100)
def __init__(self, dyndarr, nindex): if nindex > nd.ndim_of(dyndarr): raise IndexError('Cannot have more indices than dimensions') self._nindex = nindex self._dshape = datashape.dshape(nd.dshape_of(dyndarr)).subarray(nindex) self._c_dtype = ndt.type(str(self._dshape)) self._dyndarr = dyndarr
def __init__(self, dyndarr): if nd.ndim_of(dyndarr) <= 0: raise IndexError('Need at least one dimension for iteration') self._index = 0 self._len = len(dyndarr) self._dshape = datashape.dshape(nd.dshape_of(dyndarr)).subarray(1) self._c_dtype = ndt.type(str(self._dshape)) self._dyndarr = dyndarr
def test_numpy_view_of_noncontig_dynd_array(self): n = nd.range(10)[1::3] a = np.asarray(n) self.assertEqual(a.dtype, np.dtype('i4')) self.assertFalse(a.flags.c_contiguous) self.assertEqual(a.ndim, nd.ndim_of(n)) self.assertEqual(a.shape, n.shape) self.assertEqual(a.strides, n.strides) # Make sure it's a view as needed a[1] = 100 self.assertEqual(nd.as_py(n[1]), 100)
def __init__(self, dyndarr): if nd.ndim_of(dyndarr) <= 0: raise IndexError('Need at least one dimension for iteration') self._index = 0 self._len = len(dyndarr) ds = datashape.dshape(nd.dshape_of(dyndarr)) self._dshape = ds.subarray(1) self._c_dtype = ndt.type(str(self._dshape)) self._usebuffer = (ndt.type(str(ds)) != nd.type_of(dyndarr)) self._buffer = None self._buffer_index = -1 self._dyndarr = dyndarr