diff options
author | Travis Oliphant <oliphant@enthought.com> | 2006-03-29 02:15:19 +0000 |
---|---|---|
committer | Travis Oliphant <oliphant@enthought.com> | 2006-03-29 02:15:19 +0000 |
commit | c1dff9e8f2f9231597adb132634305ba407a8cc5 (patch) | |
tree | 00ee206daf52bab18c2a6c7be4c2633d9bddbd8e /numpy/core | |
parent | f819562be99e8f0adde23264d3aab654c0d32071 (diff) | |
download | numpy-c1dff9e8f2f9231597adb132634305ba407a8cc5.tar.gz |
Change so that .ravel() has old behavior.
Diffstat (limited to 'numpy/core')
-rw-r--r-- | numpy/core/src/arraymethods.c | 7 | ||||
-rw-r--r-- | numpy/core/src/arrayobject.c | 3 | ||||
-rw-r--r-- | numpy/core/src/multiarraymodule.c | 17 |
3 files changed, 16 insertions, 11 deletions
diff --git a/numpy/core/src/arraymethods.c b/numpy/core/src/arraymethods.c index 2d4c82054..a118787c7 100644 --- a/numpy/core/src/arraymethods.c +++ b/numpy/core/src/arraymethods.c @@ -103,14 +103,7 @@ array_reshape(PyArrayObject *self, PyObject *args, PyObject *kwds) goto fail; } } - - if (newshape.len == 1) { - PyDimMem_FREE(newshape.ptr); - return PyArray_Ravel(self, 0); - } - ret = PyArray_Newshape(self, &newshape, order); - PyDimMem_FREE(newshape.ptr); return ret; diff --git a/numpy/core/src/arrayobject.c b/numpy/core/src/arrayobject.c index 084eaaf7a..55254b5e9 100644 --- a/numpy/core/src/arrayobject.c +++ b/numpy/core/src/arrayobject.c @@ -3502,7 +3502,8 @@ _check_axis(PyArrayObject *arr, int *axis, int flags) if ((*axis >= MAX_DIMS) || (n==0)) { temp = PyArray_Ravel(arr,0); - *axis = PyArray_NDIM(temp)-1; + if (temp) *axis = PyArray_NDIM(temp)-1; + else *axis = 0; return temp; } else { diff --git a/numpy/core/src/multiarraymodule.c b/numpy/core/src/multiarraymodule.c index 5ccd67cf5..10231474f 100644 --- a/numpy/core/src/multiarraymodule.c +++ b/numpy/core/src/multiarraymodule.c @@ -181,8 +181,18 @@ PyArray_Ravel(PyArrayObject *a, PyArray_ORDER fortran) PyArray_Dims newdim = {NULL,1}; intp val[1] = {-1}; - newdim.ptr = val; - return PyArray_Newshape(a, &newdim, fortran); + if (fortran == PyArray_ANYORDER) + fortran = PyArray_ISFORTRAN(a); + + newdim.ptr = val; + if (!fortran && PyArray_ISCONTIGUOUS(a)) { + return PyArray_Newshape(a, &newdim, PyArray_CORDER); + } + else if (fortran && PyArray_ISFORTRAN(a)) { + return PyArray_Newshape(a, &newdim, PyArray_FORTRANORDER); + } + else + return PyArray_Flatten(a, fortran); } static double @@ -480,7 +490,8 @@ PyArray_Newshape(PyArrayObject *self, PyArray_Dims *newdims, (!PyArray_ISCONTIGUOUS(self) || (fortran == PyArray_FORTRANORDER)) && (!PyArray_ISFORTRAN(self) || (fortran == PyArray_CORDER))) { PyErr_SetString(PyExc_ValueError, - "cannot return a view from reshape."); + "array cannot be reshaped as a view; get a "\ + "copy first."); return NULL; } if (_fix_unknown_dimension(newdims, PyArray_SIZE(self)) < 0) |