summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Harris <charlesr.harris@gmail.com>2014-07-28 15:20:08 -0500
committerCharles Harris <charlesr.harris@gmail.com>2014-07-28 15:20:08 -0500
commitd61ee81e0220318ebe9404f0381c7fdfe189f647 (patch)
tree4ec58800644ab84073d91a23ade2a33d9d58f4c6
parent84a9ab0136ed49dac1d43cb7319497861919e0a9 (diff)
parentd43cd21a30bd60b53666290a992347b12e626b7f (diff)
downloadnumpy-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.c5
-rw-r--r--numpy/core/tests/test_multiarray.py10
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):