summaryrefslogtreecommitdiff
path: root/numpy/core/defmatrix.py
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/core/defmatrix.py')
-rw-r--r--numpy/core/defmatrix.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/numpy/core/defmatrix.py b/numpy/core/defmatrix.py
index a3f161384..9eb8e0011 100644
--- a/numpy/core/defmatrix.py
+++ b/numpy/core/defmatrix.py
@@ -62,16 +62,19 @@ class matrix(N.ndarray):
return data
return data.astype(dtype)
- if dtype is None:
- if isinstance(data, N.ndarray):
- dtype = data.dtype
- intype = N.obj2dtype(dtype)
+ if isinstance(data, N.ndarray):
+ intype = N.dtypedescr(dtype)
+ new = data.view(matrix)
+ if intype != data.dtypedescr:
+ return new.astype(intype)
+ if copy: return new.copy()
+ else: return new
if isinstance(data, types.StringType):
data = _convert_from_string(data)
# now convert data to an array
- arr = N.array(data, dtype=intype, copy=copy)
+ arr = N.array(data, dtype=dtype, copy=copy)
ndim = arr.ndim
shape = arr.shape
if (ndim > 2):