def test_reshape_3d1d(self): nparr = np.empty((3, 4, 5)) arr = Array.from_desc(0, nparr.shape, nparr.strides, nparr.dtype.itemsize) expect = nparr.reshape(3 * 4 * 5) got = arr.reshape(3 * 4 * 5)[0] self.assertEqual(got.shape, expect.shape) self.assertEqual(got.strides, expect.strides)
def test_squeeze_invalid_axis(self): nparr = np.empty((1, 2, 1, 4, 1, 3)) arr = Array.from_desc(0, nparr.shape, nparr.strides, nparr.dtype.itemsize) with self.assertRaises(ValueError): arr.squeeze(axis=1) with self.assertRaises(ValueError): arr.squeeze(axis=(2, 3))
def test_extent_iter_2d(self): nparr = np.empty((4, 5)) arr = Array.from_desc(0, nparr.shape, nparr.strides, nparr.dtype.itemsize) [ext] = list(arr.iter_contiguous_extent()) self.assertEqual(ext, arr.extent) self.assertEqual(len(list(arr[::2].iter_contiguous_extent())), 2)
def test_squeeze_invalid_axis(self): nparr = np.empty((1, 2, 1, 4, 1, 3)) arr = Array.from_desc( 0, nparr.shape, nparr.strides, nparr.dtype.itemsize ) with self.assertRaises(ValueError): arr.squeeze(axis=1) with self.assertRaises(ValueError): arr.squeeze(axis=(2, 3))
def test_strided_3d(self): nparr = np.empty((4, 5, 6)) arr = Array.from_desc(0, nparr.shape, nparr.strides, nparr.dtype.itemsize) xx = -2, -1, 1, 2 for a, b, c in itertools.product(xx, xx, xx): expect = nparr[::a, ::b, ::c] got = arr[::a, ::b, ::c] self.assertSameContig(got, expect) self.assertEqual(got.shape, expect.shape) self.assertEqual(got.strides, expect.strides)
def test_for_loop(self): # for #4201 N = 5 nparr = np.empty(N) arr = Array.from_desc(0, nparr.shape, nparr.strides, nparr.dtype.itemsize) x = 0 # just a placeholder # this loop should not raise AssertionError for val in arr: x = val
def test_slice2_1d(self): nparr = np.empty(4) arr = Array.from_desc(0, nparr.shape, nparr.strides, nparr.dtype.itemsize) xx = -2, -1, 0, 1, 2 for x, y in itertools.product(xx, xx): expect = nparr[x:y] got = arr[x:y] self.assertSameContig(got, expect) self.assertEqual(got.shape, expect.shape) self.assertEqual(got.strides, expect.strides)
def test_slice1_1d(self): nparr = np.empty(4) arr = Array.from_desc(0, nparr.shape, nparr.strides, nparr.dtype.itemsize) xx = -2, -1, 0, 1, 2 for x in xx: expect = nparr[:x] got = arr[:x] self.assertSameContig(got, expect) self.assertEqual(got.shape, expect.shape) self.assertEqual(got.strides, expect.strides)
def test_squeeze(self): nparr = np.empty((1, 2, 1, 4, 1, 3)) arr = Array.from_desc(0, nparr.shape, nparr.strides, nparr.dtype.itemsize) def _assert_equal_shape_strides(arr1, arr2): self.assertEqual(arr1.shape, arr2.shape) self.assertEqual(arr1.strides, arr2.strides) _assert_equal_shape_strides(arr, nparr) _assert_equal_shape_strides(arr.squeeze()[0], nparr.squeeze()) for axis in (0, 2, 4, (0, 2), (0, 4), (2, 4), (0, 2, 4)): _assert_equal_shape_strides( arr.squeeze(axis=axis)[0], nparr.squeeze(axis=axis))
def test_squeeze(self): nparr = np.empty((1, 2, 1, 4, 1, 3)) arr = Array.from_desc( 0, nparr.shape, nparr.strides, nparr.dtype.itemsize ) def _assert_equal_shape_strides(arr1, arr2): self.assertEqual(arr1.shape, arr2.shape) self.assertEqual(arr1.strides, arr2.strides) _assert_equal_shape_strides(arr, nparr) _assert_equal_shape_strides(arr.squeeze()[0], nparr.squeeze()) for axis in (0, 2, 4, (0, 2), (0, 4), (2, 4), (0, 2, 4)): _assert_equal_shape_strides( arr.squeeze(axis=axis)[0], nparr.squeeze(axis=axis) )
def test_slice2_2d(self): nparr = np.empty((4, 5)) arr = Array.from_desc(0, nparr.shape, nparr.strides, nparr.dtype.itemsize) xx = -2, 0, 2 for s, t, u, v in itertools.product(xx, xx, xx, xx): expect = nparr[s:t, u:v] got = arr[s:t, u:v] self.assertSameContig(got, expect) self.assertEqual(got.shape, expect.shape) self.assertEqual(got.strides, expect.strides) for x, y in itertools.product(xx, xx): expect = nparr[s:t, u:v] got = arr[s:t, u:v] self.assertSameContig(got, expect) self.assertEqual(got.shape, expect.shape) self.assertEqual(got.strides, expect.strides)
def test_slice1_2d(self): nparr = np.empty((4, 5)) arr = Array.from_desc(0, nparr.shape, nparr.strides, nparr.dtype.itemsize) xx = -2, 0, 2 for x in xx: expect = nparr[:x] got = arr[:x] self.assertEqual(got.shape, expect.shape) self.assertEqual(got.strides, expect.strides) self.assertSameContig(got, expect) for x, y in itertools.product(xx, xx): expect = nparr[:x, :y] got = arr[:x, :y] self.assertEqual(got.shape, expect.shape) self.assertEqual(got.strides, expect.strides) self.assertSameContig(got, expect)
def test_extent_2d(self): nparr = np.empty((4, 5)) arr = Array.from_desc(0, nparr.shape, nparr.strides, nparr.dtype.itemsize) s, e = arr.extent self.assertEqual(e - s, nparr.size * nparr.dtype.itemsize)