summaryrefslogtreecommitdiff
path: root/numpy/linalg/linalg.py
diff options
context:
space:
mode:
authoralex <argriffi@ncsu.edu>2015-05-22 15:53:36 -0400
committeralex <argriffi@ncsu.edu>2015-05-22 15:53:36 -0400
commit1ff2be174f86ebca2e7a006012bcc5744ace2f6e (patch)
treefb8d445beee0ee85535d635b6ab1bcb58e9a4b43 /numpy/linalg/linalg.py
parent464e767f0667ecd7dbd56c89909f8c416729f0dd (diff)
downloadnumpy-1ff2be174f86ebca2e7a006012bcc5744ace2f6e.tar.gz
MAINT: conditional copy=False in some astype calls
Diffstat (limited to 'numpy/linalg/linalg.py')
-rw-r--r--numpy/linalg/linalg.py20
1 files changed, 16 insertions, 4 deletions
diff --git a/numpy/linalg/linalg.py b/numpy/linalg/linalg.py
index 69da32003..d2e786970 100644
--- a/numpy/linalg/linalg.py
+++ b/numpy/linalg/linalg.py
@@ -23,7 +23,7 @@ from numpy.core import (
csingle, cdouble, inexact, complexfloating, newaxis, ravel, all, Inf, dot,
add, multiply, sqrt, maximum, fastCopyAndTranspose, sum, isfinite, size,
finfo, errstate, geterrobj, longdouble, rollaxis, amin, amax, product, abs,
- broadcast, atleast_2d, intp, asanyarray
+ broadcast, atleast_2d, intp, asanyarray, isscalar
)
from numpy.lib import triu, asfarray
from numpy.linalg import lapack_lite, _umath_linalg
@@ -782,7 +782,7 @@ def qr(a, mode='reduced'):
if mode == 'economic':
if t != result_t :
- a = a.astype(result_t)
+ a = a.astype(result_t, copy=False)
return wrap(a.T)
# generate q from a
@@ -1696,7 +1696,15 @@ def slogdet(a):
real_t = _realType(result_t)
signature = 'D->Dd' if isComplexType(t) else 'd->dd'
sign, logdet = _umath_linalg.slogdet(a, signature=signature)
- return sign.astype(result_t), logdet.astype(real_t)
+ if isscalar(sign):
+ sign = sign.astype(result_t)
+ else:
+ sign = sign.astype(result_t, copy=False)
+ if isscalar(logdet):
+ logdet = logdet.astype(real_t)
+ else:
+ logdet = logdet.astype(real_t, copy=False)
+ return sign, logdet
def det(a):
"""
@@ -1751,7 +1759,11 @@ def det(a):
t, result_t = _commonType(a)
signature = 'D->D' if isComplexType(t) else 'd->d'
r = _umath_linalg.det(a, signature=signature)
- return r.astype(result_t)
+ if isscalar(r):
+ r = r.astype(result_t)
+ else:
+ r = r.astype(result_t, copy=False)
+ return r
# Linear Least Squares