From e4bafb2a4a3c682aaec18cc184c6a95ee1a30c26 Mon Sep 17 00:00:00 2001 From: Sebastian Berg Date: Mon, 3 Sep 2012 16:22:06 +0200 Subject: Reset flags when Axes are removed. Array might now be 1D, or removed axes of size 1 destroy contiguousity. --- numpy/core/src/multiarray/shape.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'numpy') diff --git a/numpy/core/src/multiarray/shape.c b/numpy/core/src/multiarray/shape.c index 067232632..684d42713 100644 --- a/numpy/core/src/multiarray/shape.c +++ b/numpy/core/src/multiarray/shape.c @@ -1186,4 +1186,7 @@ PyArray_RemoveAxesInPlace(PyArrayObject *arr, npy_bool *flags) /* The final number of dimensions */ fa->nd = idim_out; + + /* Update contiguous flags */ + PyArray_UpdateFlags(arr, NPY_ARRAY_C_CONTIGUOUS | NPY_ARRAY_F_CONTIGUOUS); } -- cgit v1.2.1 From 380ce9436c3c94de60ef9ada40f3917990ed1472 Mon Sep 17 00:00:00 2001 From: Sebastian Berg Date: Tue, 4 Sep 2012 02:00:47 +0200 Subject: Tests related to Issue #387 --- numpy/core/tests/test_regression.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'numpy') diff --git a/numpy/core/tests/test_regression.py b/numpy/core/tests/test_regression.py index 53471b2c2..696bae622 100644 --- a/numpy/core/tests/test_regression.py +++ b/numpy/core/tests/test_regression.py @@ -1528,6 +1528,22 @@ class TestRegression(TestCase): assert_(np.array(np.float32(1.0)).flags.c_contiguous) assert_(np.array(np.float32(1.0)).flags.f_contiguous) + def test_squeeze_contiguous(self): + """Similar to GitHub issue #387""" + a = np.zeros((1,2)).squeeze() + b = np.zeros((2,2,2), order='F')[:,:,::2].squeeze() + assert_(a.flags.c_contiguous) + assert_(a.flags.f_contiguous) + assert_(b.flags.f_contiguous) + + def test_reduce_contiguous(self): + """GitHub issue #387""" + a = np.add.reduce(np.zeros((2,1,2)), (0,1)) + b = np.add.reduce(np.zeros((2,1,2)), 1) + assert_(a.flags.c_contiguous) + assert_(a.flags.f_contiguous) + assert_(b.flags.c_contiguous) + def test_object_array_self_reference(self): # Object arrays with references to themselves can cause problems a = np.array(0, dtype=object) -- cgit v1.2.1