diff options
author | Charles Harris <charlesr.harris@gmail.com> | 2014-07-28 15:20:08 -0500 |
---|---|---|
committer | Charles Harris <charlesr.harris@gmail.com> | 2014-07-28 15:20:08 -0500 |
commit | d61ee81e0220318ebe9404f0381c7fdfe189f647 (patch) | |
tree | 4ec58800644ab84073d91a23ade2a33d9d58f4c6 | |
parent | 84a9ab0136ed49dac1d43cb7319497861919e0a9 (diff) | |
parent | d43cd21a30bd60b53666290a992347b12e626b7f (diff) | |
download | numpy-d61ee81e0220318ebe9404f0381c7fdfe189f647.tar.gz |
Merge pull request #4913 from juliantaylor/fix-cont-constr
BUG: fix ineffective as ascontiguousarray
-rw-r--r-- | numpy/core/src/multiarray/multiarraymodule.c | 5 | ||||
-rw-r--r-- | numpy/core/tests/test_multiarray.py | 10 |
2 files changed, 13 insertions, 2 deletions
diff --git a/numpy/core/src/multiarray/multiarraymodule.c b/numpy/core/src/multiarray/multiarraymodule.c index a31751ec6..65ef81bac 100644 --- a/numpy/core/src/multiarray/multiarraymodule.c +++ b/numpy/core/src/multiarray/multiarraymodule.c @@ -1653,8 +1653,9 @@ _array_fromobject(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *kws) } copy = NPY_FALSE; - /* order does not matter for 1d arrays */ - if (PyArray_NDIM(op) > 1) { + /* order does not matter for contiguous 1d arrays */ + if (PyArray_NDIM((PyArrayObject*)op) > 1 || + !PyArray_IS_C_CONTIGUOUS((PyArrayObject*)op)) { order_obj = PyDict_GetItem(kws, npy_ma_str_order); if (order_obj != Py_None && order_obj != NULL) { goto full_path; diff --git a/numpy/core/tests/test_multiarray.py b/numpy/core/tests/test_multiarray.py index 221a930c2..a2667b38a 100644 --- a/numpy/core/tests/test_multiarray.py +++ b/numpy/core/tests/test_multiarray.py @@ -273,6 +273,16 @@ class TestArrayConstruction(TestCase): assert_array_equal(e, [[1, 3, 7], [1, 2, 3]]) assert_array_equal(d, [[1, 5, 3], [1,2,3]]) + def test_array_cont(self): + d = np.ones(10)[::2] + assert_(np.ascontiguousarray(d).flags.c_contiguous) + assert_(np.ascontiguousarray(d).flags.f_contiguous) + assert_(np.asfortranarray(d).flags.c_contiguous) + assert_(np.asfortranarray(d).flags.f_contiguous) + d = np.ones((10, 10))[::2,::2] + assert_(np.ascontiguousarray(d).flags.c_contiguous) + assert_(np.asfortranarray(d).flags.f_contiguous) + class TestAssignment(TestCase): def test_assignment_broadcasting(self): |