summaryrefslogtreecommitdiff
path: root/numpy/linalg/tests
diff options
context:
space:
mode:
authorMatthew Brett <matthew.brett@gmail.com>2009-12-22 15:50:09 +0000
committerMatthew Brett <matthew.brett@gmail.com>2009-12-22 15:50:09 +0000
commit5ba01996a9ab2fdfb7c120a5afae801f854a781a (patch)
tree48a458f57dfc7104bf3f04652718cf8dbedbeb04 /numpy/linalg/tests
parent55ab10cd15e165dbf129079846adaf3961b527fd (diff)
downloadnumpy-5ba01996a9ab2fdfb7c120a5afae801f854a781a.tar.gz
ENH - added matrix_rank function to linalg
Diffstat (limited to 'numpy/linalg/tests')
-rw-r--r--numpy/linalg/tests/test_linalg.py22
1 files changed, 21 insertions, 1 deletions
diff --git a/numpy/linalg/tests/test_linalg.py b/numpy/linalg/tests/test_linalg.py
index 01e96d6a2..b81561254 100644
--- a/numpy/linalg/tests/test_linalg.py
+++ b/numpy/linalg/tests/test_linalg.py
@@ -6,7 +6,7 @@ from numpy.testing import *
from numpy import array, single, double, csingle, cdouble, dot, identity
from numpy import multiply, atleast_2d, inf, asarray, matrix
from numpy import linalg
-from numpy.linalg import matrix_power, norm
+from numpy.linalg import matrix_power, norm, matrix_rank
def ifthen(a, b):
return not a or b
@@ -315,5 +315,25 @@ class TestNormSingle(_TestNorm):
dt = np.float32
dec = 6
+
+def test_matrix_rank():
+ # Full rank matrix
+ yield assert_equal, 4, matrix_rank(np.eye(4))
+ # rank deficient matrix
+ I=np.eye(4); I[-1,-1] = 0.
+ yield assert_equal, matrix_rank(I), 3
+ # All zeros - zero rank
+ yield assert_equal, matrix_rank(np.zeros((4,4))), 0
+ # 1 dimension - rank 1 unless all 0
+ yield assert_equal, matrix_rank([1, 0, 0, 0]), 1
+ yield assert_equal, matrix_rank(np.zeros((4,))), 0
+ # accepts array-like
+ yield assert_equal, matrix_rank([1]), 1
+ # greater than 2 dimensions raises error
+ yield assert_raises, TypeError, matrix_rank, np.zeros((2,2,2))
+ # works on scalar
+ yield assert_equal, matrix_rank(1), 1
+
+
if __name__ == "__main__":
run_module_suite()