删除python中矩阵的独立行或列

时间:2014-02-27 06:36:31

标签: python matrix linear-algebra

我必须解决Ax = b。我相信python库在确定的系统/超定方程式下求解是不同的。 在python中是否有一个库函数,它将从矩阵中删除相关的行/列,以便从矩阵的秩中我可以适当地求解方程

2 个答案:

答案 0 :(得分:2)

您可以使用A的pseudoinverse矩阵表示为A + 。当且仅当AA + b = b且所有解都由下式给出时,存在一种解决方案 x = A + b +(I - A + A)* u

这可以使用numpy.linalg

完成

示例:

>>> A = np.array([[1, 2, 3], [4, 5, 6],[8, 10, 12]])
>>> b = np.array([22., 7., 14.])
>>> Ap = np.linalg.pinv(A)
# Check if a solution exist
>>> np.testing.assert_allclose(A.dot(Ap).dot(b),b,rtol=1e-5, atol=0)
>>> x = Ap.dot(b)
>>> print A.dot(x)
[ 22.,   7.,  14.]

或者你可以使用numpy.linalg.lstsq

示例:

>>> A = np.array([[1, 2, 3], [4, 5, 6],[8, 10, 12]])
>>> b = np.array([22., 7., 14.])
>>> x = np.linalg.lstsq(A,b)[0]
>>> print np.dot(A,x)
[ 22.,   7.,  14.]

答案 1 :(得分:1)

您可以使用numpy进行科学计算。 E.g:

In [23]: import numpy as np

In [24]: a=np.arange(16).reshape((4,4))

In [25]: a
Out[25]: 
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])

In [26]: np.delete(a, 2, axis=1)  #delete the 3rd column
Out[26]: 
array([[ 0,  1,  3],
       [ 4,  5,  7],
       [ 8,  9, 11],
       [12, 13, 15]])

In [27]: np.rank(a) #this returns the number of dimensions of an array, 
                    #not the concept "rank" in linear algebra, 
Out[27]: 2

In [40]: np.linalg.matrix_rank(a) #this returns matrix rank of array using SVD method
Out[40]: 2

在Windows上,您可以获得unofficial installer here

另一篇文章:Calculate Matrix Rank using scipy