summaryrefslogtreecommitdiff
path: root/numpy/core
diff options
context:
space:
mode:
authorTravis Oliphant <oliphant@enthought.com>2006-03-29 02:15:19 +0000
committerTravis Oliphant <oliphant@enthought.com>2006-03-29 02:15:19 +0000
commitc1dff9e8f2f9231597adb132634305ba407a8cc5 (patch)
tree00ee206daf52bab18c2a6c7be4c2633d9bddbd8e /numpy/core
parentf819562be99e8f0adde23264d3aab654c0d32071 (diff)
downloadnumpy-c1dff9e8f2f9231597adb132634305ba407a8cc5.tar.gz
Change so that .ravel() has old behavior.
Diffstat (limited to 'numpy/core')
-rw-r--r--numpy/core/src/arraymethods.c7
-rw-r--r--numpy/core/src/arrayobject.c3
-rw-r--r--numpy/core/src/multiarraymodule.c17
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)