From 5ba01996a9ab2fdfb7c120a5afae801f854a781a Mon Sep 17 00:00:00 2001 From: Matthew Brett Date: Tue, 22 Dec 2009 15:50:09 +0000 Subject: ENH - added matrix_rank function to linalg --- numpy/linalg/tests/test_linalg.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'numpy/linalg/tests') 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() -- cgit v1.2.1