Python伪逆与向量行列式

Python伪逆与向量行列式,python,vector,numpy,pandas,linear-algebra,Python,Vector,Numpy,Pandas,Linear Algebra,如何计算向量的伪逆和行列式?(最好与numpy或更好的熊猫一起使用) 我试过这个,但不起作用: import numpy vect = [1, 2, 3, 4] numpy.linalg.pinv(vect) 但我得到了这个错误: --------------------------------------------------------------------------- LinAlgError Traceback (most

如何计算向量的伪逆和行列式?(最好与numpy或更好的熊猫一起使用)

我试过这个,但不起作用:

import numpy
vect = [1, 2, 3, 4]
numpy.linalg.pinv(vect)
但我得到了这个错误:

---------------------------------------------------------------------------
LinAlgError                               Traceback (most recent call last)
<ipython-input-106-e362654e383f> in <module>()
     19 vect = [1, 2, 3, 4]
---> 20 print(np.linalg.pinv(vect))

C:\Python27\lib\site-packages\numpy\linalg\linalg.pyc in pinv(a, rcond)
   1544     _assertNonEmpty(a)
   1545     a = a.conjugate()
-> 1546     u, s, vt = svd(a, 0)
   1547     m = u.shape[0]
   1548     n = vt.shape[1]

C:\Python27\lib\site-packages\numpy\linalg\linalg.pyc in svd(a, full_matrices, compute_uv)
   1269     """
   1270     a, wrap = _makearray(a)
-> 1271     _assertRank2(a)
   1272     _assertNonEmpty(a)
   1273     m, n = a.shape

C:\Python27\lib\site-packages\numpy\linalg\linalg.pyc in _assertRank2(*arrays)
    153         if len(a.shape) != 2:
    154             raise LinAlgError, '%d-dimensional array given. Array must be \
--> 155             two-dimensional' % len(a.shape)
    156 
    157 def _assertSquareness(*arrays):

LinAlgError: 1-dimensional array given. Array must be             two-dimensional
---------------------------------------------------------------------------
LinalError回溯(最近一次调用上次)
在()
19向量=[1,2,3,4]
--->20个印刷品(np.linalg.pinv(矢量))
C:\Python27\lib\site packages\numpy\linalg\linalg.pyc,pinv格式(a,rcond)
1544_资产非空(a)
1545 a=a.共轭()
->1546 u,s,vt=svd(a,0)
1547米=u形[0]
1548 n=vt.shape[1]
svd中的C:\Python27\lib\site packages\numpy\linalg\linalg.pyc(a,完整矩阵,计算uv)
1269     """
1270 a,wrap=\u makearray(a)
->1271_资产等级2(a)
1272 _资产非空(a)
1273米,n=a形
C:\Python27\lib\site packages\numpy\linalg\linalg.pyc在_assertRank2(*数组)中
153如果len(a.形状)!=2:
154 raise LinAlgError,给定了%d维数组。数组必须为\
-->155二维“%len”(a.形状)
156
157 def_assertSquareness(*数组):
LinalError:给定了一维数组。数组必须是二维的
也许你想要这个

>>> np.linalg.pinv([[1, 2, 3, 4]])
array([[ 0.03333333],
       [ 0.06666667],
       [ 0.1       ],
       [ 0.13333333]])
请注意额外的一组括号。正如错误消息所示,您只能对矩阵进行伪逆运算。如果您只有一个向量,则需要将其转换为一行矩阵。

也许您需要这样做

>>> np.linalg.pinv([[1, 2, 3, 4]])
array([[ 0.03333333],
       [ 0.06666667],
       [ 0.1       ],
       [ 0.13333333]])

请注意额外的一组括号。正如错误消息所示,您只能对矩阵进行伪逆运算。如果您只有一个向量,则需要将其转换为一行矩阵。

谢谢您的提示!它确实适用于linalg.pinv,但不适用于linalg.det!(错误:“数组必须是正方形”)你知道我该如何处理det吗?@user1121352:我能问一下非方矩阵的行列式有什么用例吗?@user1121352:行列式只在数学上定义为方矩阵。不,没关系,我是在修改我过去用八度音程编写的代码,以及八度音程的diag()函数都可以从矩阵返回一个向量,或者从向量返回一个矩阵(非常混乱!)。谢谢你的提示,我把它保存在我的书中。@BrenBarn:事实上,你可以做一些概括,但它们很模糊,很少有用。(顺便说一句,你的化身让我回到了过去。)感谢您的提示!它确实适用于linalg.pinv,但不适用于linalg.det!(错误:“数组必须是方形的”)你知道我该如何处理det吗?@user1121352:我能问一下非方矩阵的行列式有什么用例吗?@user1121352:行列式只在数学上定义为方矩阵。不,没关系,我是在修改我过去用八度音程编写的代码,以及八度音程的diag()函数都可以从矩阵返回一个向量,或者从向量返回一个矩阵(非常混乱!)。谢谢你的提示,我把它保存在我的书中。@BrenBarn:事实上,你可以做一些概括,但它们很模糊,很少有用。(顺便说一句,你的化身让我回到了过去。)这个错误清楚地表明了“LinalError:给定的一维数组”的问题。数组必须是二维的“错误清楚地表明了问题所在”LinalError:给定的一维数组。数组必须是二维的“