Example #1
0
 def test_multidim_stack_multidim(self):
     # Multidim stack of arrays shape (4, 6)
     arrays = np.array([[ConstantArray((), i) for i in range(6)] for
                        i in range(4)])
     msg = 'multidimensional stacks not yet supported'
     with self.assertRaisesRegexp(ValueError, msg):
         ArrayStack.multidim_array_stack(arrays, (3, 2, 4))
Example #2
0
 def test_multidim_stack_multidim(self):
     # Multidim stack of arrays shape (4, 6)
     arrays = np.array([[ConstantArray((), i) for i in range(6)]
                        for i in range(4)])
     msg = 'multidimensional stacks not yet supported'
     with self.assertRaisesRegexp(ValueError, msg):
         ArrayStack.multidim_array_stack(arrays, (3, 2, 4))
Example #3
0
 def test_order_incorrect_order(self):
     # Specifying an unknown order.
     array1 = fake_array(0)
     array2 = fake_array(0)
     with self.assertRaisesRegexp(TypeError, 'order not understood'):
         ArrayStack.multidim_array_stack([array1, array2], (1, 2),
                                         order='random')
Example #4
0
 def test_order_incorrect_order(self):
     # Specifying an unknown order.
     array1 = fake_array(0)
     array2 = fake_array(0)
     with self.assertRaisesRegexp(TypeError, 'order not understood'):
         ArrayStack.multidim_array_stack([array1, array2], (1, 2),
                                         order='random')
Example #5
0
 def test_stack_order_c_numpy_array_t2(self):
     # 1D stack of arrays shape (6,)
     # alternate shape
     res = ArrayStack.multidim_array_stack(self.arrays, (2, 3), order='C')
     arr = np.array([i for i in range(6)])
     target = np.reshape(arr, (2, 3), order='C')
     self.assertTrue(np.array_equal(res.ndarray(), target))
Example #6
0
 def test_stack_order_fortran_t1(self):
     # Fortran index ordering
     # 1D stack of arrays shape (6,)
     res = ArrayStack.multidim_array_stack(self.arrays, (3, 2), order='F')
     arr = np.array([i for i in range(6)])
     target = np.reshape(arr, (3, 2), order='F')
     self.assertTrue(np.array_equal(res.ndarray(), target))
Example #7
0
 def test_stack_order_default(self):
     # 1D stack of arrays shape (6,)
     # Ensure that the default index ordering corresponds to C.
     res = ArrayStack.multidim_array_stack(self.arrays, (3, 2))
     arr = np.array([i for i in range(6)])
     target = np.reshape(arr, (3, 2), order='C')
     self.assertTrue(np.array_equal(res.ndarray(), target))
Example #8
0
 def test_stack_order_fortran_t1(self):
     # Fortran index ordering
     # 1D stack of arrays shape (6,)
     res = ArrayStack.multidim_array_stack(self.arrays, (3, 2), order='F')
     arr = np.array([i for i in range(6)])
     target = np.reshape(arr, (3, 2), order='F')
     self.assertTrue(np.array_equal(res.ndarray(), target))
Example #9
0
 def test_stack_order_c_numpy_array_t2(self):
     # 1D stack of arrays shape (6,)
     # alternate shape
     res = ArrayStack.multidim_array_stack(self.arrays, (2, 3), order='C')
     arr = np.array([i for i in range(6)])
     target = np.reshape(arr, (2, 3), order='C')
     self.assertTrue(np.array_equal(res.ndarray(), target))
Example #10
0
 def test_stack_order_c_list(self):
     # 1D stack of arrays length  6
     res = ArrayStack.multidim_array_stack(self.arrays.tolist(), (3, 2),
                                           order='C')
     arr = np.array([i for i in range(6)])
     target = np.reshape(arr, (3, 2), order='C')
     self.assertTrue(np.array_equal(res.ndarray(), target))
 def data(self):
     if not self._structure_calculated:
         self._calculate_structure()
     if self._data_cache is None:
         data_arrays = [f._data for f in self.fields]
         self._data_cache = ArrayStack.multidim_array_stack(data_arrays, self.vector_dims_shape)
     return self._data_cache
Example #12
0
 def test_stack_order_c_list(self):
     # 1D stack of arrays length  6
     res = ArrayStack.multidim_array_stack(self.arrays.tolist(), (3, 2),
                                           order='C')
     arr = np.array([i for i in range(6)])
     target = np.reshape(arr, (3, 2), order='C')
     self.assertTrue(np.array_equal(res.ndarray(), target))
Example #13
0
 def test_stack_order_default(self):
     # 1D stack of arrays shape (6,)
     # Ensure that the default index ordering corresponds to C.
     res = ArrayStack.multidim_array_stack(self.arrays, (3, 2))
     arr = np.array([i for i in range(6)])
     target = np.reshape(arr, (3, 2), order='C')
     self.assertTrue(np.array_equal(res.ndarray(), target))
Example #14
0
 def test_stack_order_fortran_t2(self):
     # Fortran index ordering
     # 1D stack of arrays shape (6,)
     # alternate shape
     res = ArrayStack.multidim_array_stack(self.arrays, (2, 3), order='F')
     arr = np.arange(6)
     target = np.reshape(arr, (2, 3), order='F')
     self.assertTrue(np.array_equal(res.ndarray(), target))
Example #15
0
 def test_stack_order_c_multidim(self):
     # 1D stack of 6 arrays each (4, 5)
     arrays = [NumpyArrayAdapter(np.arange(20).reshape(4, 5)) for
               i in range(6)]
     res = ArrayStack.multidim_array_stack(arrays, (2, 3), order='C')
     arr = np.arange(20).reshape(4, 5) * np.ones((6, 4, 5))
     target = np.reshape(arr, (2, 3, 4, 5), order='C')
     self.assertTrue(np.array_equal(res.ndarray(), target))
Example #16
0
 def test_stack_order_c_multidim(self):
     # 1D stack of 6 arrays each (4, 5)
     arrays = [NumpyArrayAdapter(np.arange(20).reshape(4, 5)) for
               i in range(6)]
     res = ArrayStack.multidim_array_stack(arrays, (2, 3), order='C')
     arr = np.arange(20).reshape(4, 5) * np.ones((6, 4, 5))
     target = np.reshape(arr, (2, 3, 4, 5), order='C')
     self.assertTrue(np.array_equal(res.ndarray(), target))
Example #17
0
 def test_not_arrays(self):
     class BadArray(object):
         dtype = 'f'
         fill_value = 9
         shape = ()
     bad_arrays = np.array([BadArray()])
     with six.assertRaisesRegex(self, ValueError, 'subclass'):
         ArrayStack(bad_arrays)
Example #18
0
 def check(self, order):
     adapt = self.adapt
     expected = np.array([[0, 1], [2, 3]], order=order)
     orig = ArrayStack(
         np.array([[adapt(0), adapt(1)], [adapt(2), adapt(3)]],
                  order=order,
                  dtype=object))
     copied = copy.deepcopy(orig)
     assert_array_equal(expected, copied.ndarray())
 def data(self):
     if not self._structure_calculated:
         self._calculate_structure()
     if self._data_cache is None:
         data_arrays = [f._data for f in self.fields]
         self._data_cache = \
             ArrayStack.multidim_array_stack(data_arrays,
                                             self.vector_dims_shape)
     return self._data_cache
Example #20
0
    def check(self, order):
        def adapt(value):
            return NumpyArrayAdapter(np.array(value))

        expected = np.array([[0, 1], [2, 3]], order=order)
        orig = ArrayStack(np.array([[adapt(0), adapt(1)],
                                    [adapt(2), adapt(3)]],
                                   order=order, dtype=object))
        copied = copy.deepcopy(orig)
        assert_array_equal(expected, copied.ndarray())
Example #21
0
 def check(self, order):
     adapt = self.adapt
     expected = np.array([[0, 1], [2, 3]], order=order)
     orig = ArrayStack(np.array([[adapt(0), adapt(1)],
                                 [adapt(2), adapt(3)]],
                                order=order, dtype=object))
     copied = copy.deepcopy(orig)
     assert_array_equal(expected, copied.ndarray())
     for array in copied._stack.flat:
         self.assertTrue(isinstance(array, NumpyArrayAdapter))
Example #22
0
 def test_slice_copy(self):
     adapt = self.adapt
     shape = (2, 22, 2)
     data = [adapt(v) for v in range(np.cumprod(shape)[-1])]
     base = ArrayStack(np.array(data, dtype='O').reshape(shape))
     s = (slice(None), (3, 7, 11, 15, 18, 21), slice(None))
     actual = base[s]
     copied = copy.deepcopy(actual)
     expected = np.array(
         [[[6, 7], [14, 15], [22, 23], [30, 31], [36, 37], [42, 43]],
          [[50, 51], [58, 59], [66, 67], [74, 75], [80, 81], [86, 87]]],
         dtype='O')
     assert_array_equal(expected, copied.ndarray())
Example #23
0
 def test_different_strings(self):
     array1 = fake_array('foo', np.dtype('S3'))
     array2 = fake_array('bar', np.dtype('S3'))
     stack = ArrayStack(np.array([array1, array2]))
     self.assertEqual(stack.fill_value, b'N/A')
Example #24
0
 def test_stack_order_c_numpy_array_t1(self):
     # 1D stack of arrays shape (6,)
     res = ArrayStack.multidim_array_stack(self.arrays, (3, 2), order='C')
     arr = np.arange(6)
     target = np.reshape(arr, (3, 2), order='C')
     self.assertTrue(np.array_equal(res.ndarray(), target))
Example #25
0
 def test_incompatible_shape(self):
     # 1D stack of arrays shape (6,)
     # Specifying a stack shape that is not feasible.
     msg = 'total size of new array must be unchanged'
     with self.assertRaisesRegexp(ValueError, msg):
         ArrayStack.multidim_array_stack(self.arrays, (3, 1), order='C')
Example #26
0
 def test_different_strings(self):
     array1 = fake_array('foo', np.dtype('S3'))
     array2 = fake_array('bar', np.dtype('S3'))
     with self.assertRaises(ValueError):
         ArrayStack(np.array([array1, array2]))
Example #27
0
 def test_matching_strings(self):
     array1 = fake_array('foo', np.dtype('S3'))
     array2 = fake_array('foo', np.dtype('S3'))
     stack = ArrayStack(np.array([array1, array2]))
     self.assertEqual(stack.fill_value, 'foo')
Example #28
0
 def test_number_other_number(self):
     array1 = fake_array(42)
     array2 = fake_array(43)
     with self.assertRaises(ValueError):
         ArrayStack(np.array([array1, array2]))
Example #29
0
 def test_incompatible_shape(self):
     # 1D stack of arrays shape (6,)
     # Specifying a stack shape that is not feasible.
     msg = 'total size of new array must be unchanged'
     with self.assertRaisesRegexp(ValueError, msg):
         ArrayStack.multidim_array_stack(self.arrays, (3, 1), order='C')
Example #30
0
 def test_nan_nan(self):
     array1 = fake_array(np.nan)
     array2 = fake_array(np.nan)
     stack = ArrayStack(np.array([array1, array2]))
     self.assertTrue(np.isnan(stack.fill_value))
Example #31
0
 def test_number_number(self):
     array1 = fake_array(42)
     array2 = fake_array(42)
     stack = ArrayStack(np.array([array1, array2]))
     self.assertEqual(stack.fill_value, 42)
Example #32
0
 def setUp(self):
     self.a1 = ConstantArray([4, 3])
     self.a2 = ConstantArray([4, 3])
     self.a = ArrayStack([self.a1, self.a2])