summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
authorCharles Harris <charlesr.harris@gmail.com>2008-04-29 03:05:50 +0000
committerCharles Harris <charlesr.harris@gmail.com>2008-04-29 03:05:50 +0000
commit240d9a2236213e5439a89bf51cfaf0257bf85729 (patch)
treedd8572b4eb6480af88a5cb5070eb9c5f10d154c2 /numpy
parente4d0d765d1ca1784645d836a865e85e4219b0103 (diff)
downloadnumpy-240d9a2236213e5439a89bf51cfaf0257bf85729.tar.gz
Keep singular values and eigenvalues as 1D arrays until the matrix indexing
controversy is settled. This will also keep code that uses diag(ev), from breaking.
Diffstat (limited to 'numpy')
-rw-r--r--numpy/linalg/linalg.py14
-rw-r--r--numpy/linalg/tests/test_linalg.py4
2 files changed, 7 insertions, 11 deletions
diff --git a/numpy/linalg/linalg.py b/numpy/linalg/linalg.py
index ea4585dfa..10d05f07f 100644
--- a/numpy/linalg/linalg.py
+++ b/numpy/linalg/linalg.py
@@ -594,7 +594,7 @@ def eigvals(a):
result_t = _complexType(result_t)
if results['info'] > 0:
raise LinAlgError, 'Eigenvalues did not converge'
- return wrap(w.astype(result_t))
+ return w.astype(result_t)
def eigvalsh(a, UPLO='L'):
@@ -673,7 +673,7 @@ def eigvalsh(a, UPLO='L'):
iwork, liwork, 0)
if results['info'] > 0:
raise LinAlgError, 'Eigenvalues did not converge'
- return wrap(w.astype(result_t))
+ return w.astype(result_t)
def _convertarray(a):
t, result_t = _commonType(a)
@@ -786,7 +786,7 @@ def eig(a):
if results['info'] > 0:
raise LinAlgError, 'Eigenvalues did not converge'
vt = v.transpose().astype(result_t)
- return wrap(w.astype(result_t)), wrap(vt)
+ return w.astype(result_t), wrap(vt)
def eigh(a, UPLO='L'):
@@ -872,7 +872,7 @@ def eigh(a, UPLO='L'):
if results['info'] > 0:
raise LinAlgError, 'Eigenvalues did not converge'
at = a.transpose().astype(result_t)
- return wrap(w.astype(_realType(result_t))), wrap(at)
+ return w.astype(_realType(result_t)), wrap(at)
# Singular value decomposition
@@ -979,9 +979,9 @@ def svd(a, full_matrices=1, compute_uv=1):
if compute_uv:
u = u.transpose().astype(result_t)
vt = vt.transpose().astype(result_t)
- return wrap(u), wrap(s), wrap(vt)
+ return wrap(u), s, wrap(vt)
else:
- return wrap(s)
+ return s
def cond(x, p=None):
"""Compute the condition number of a matrix.
@@ -1208,7 +1208,7 @@ def lstsq(a, b, rcond=-1):
if results['rank'] == n and m > n:
resids = sum((transpose(bstar)[n:,:])**2, axis=0).astype(result_t)
st = s[:min(n, m)].copy().astype(_realType(result_t))
- return wrap(x), wrap(resids), results['rank'], wrap(st)
+ return wrap(x), wrap(resids), results['rank'], st
def norm(x, ord=None):
"""Matrix or vector norm.
diff --git a/numpy/linalg/tests/test_linalg.py b/numpy/linalg/tests/test_linalg.py
index b6274bc35..d7c3a63ca 100644
--- a/numpy/linalg/tests/test_linalg.py
+++ b/numpy/linalg/tests/test_linalg.py
@@ -88,13 +88,11 @@ class TestEigvals(LinalgTestCase):
ev = linalg.eigvals(a)
evalues, evectors = linalg.eig(a)
assert_almost_equal(ev, evalues)
- assert imply(isinstance(a, matrix), isinstance(ev, matrix))
class TestEig(LinalgTestCase):
def do(self, a, b):
evalues, evectors = linalg.eig(a)
assert_almost_equal(dot(a, evectors), multiply(evectors, evalues))
- assert imply(isinstance(a, matrix), isinstance(evalues, matrix))
assert imply(isinstance(a, matrix), isinstance(evectors, matrix))
class TestSVD(LinalgTestCase):
@@ -102,7 +100,6 @@ class TestSVD(LinalgTestCase):
u, s, vt = linalg.svd(a, 0)
assert_almost_equal(a, dot(multiply(u, s), vt))
assert imply(isinstance(a, matrix), isinstance(u, matrix))
- assert imply(isinstance(a, matrix), isinstance(s, matrix))
assert imply(isinstance(a, matrix), isinstance(vt, matrix))
class TestCondSVD(LinalgTestCase):
@@ -147,7 +144,6 @@ class TestLstsq(LinalgTestCase):
assert_almost_equal(sv, sv.__array_wrap__(s))
assert imply(isinstance(b, matrix), isinstance(x, matrix))
assert imply(isinstance(b, matrix), isinstance(residuals, matrix))
- assert imply(isinstance(b, matrix), isinstance(sv, matrix))
class TestMatrixPower(ParametricTestCase):
R90 = array([[0,1],[-1,0]])