在Python中,如何将表示为numpy.ndarray的平方矩阵提升为非整数幂?
假设我有一个平方矩阵,可以提升到-1/2次方。 我想将表示为在Python中,如何将表示为numpy.ndarray的平方矩阵提升为非整数幂?,python,numpy,matrix,exponent,Python,Numpy,Matrix,Exponent,假设我有一个平方矩阵,可以提升到-1/2次方。 我想将表示为numpy.ndarray的方阵提高到-1/2 注意,我想将矩阵提升为非整数次幂。我不想将矩阵的每个元素都提升为非整数次幂 我知道我可以使用numpy.linalg.matrix\u power将矩阵提升为整数次幂,如中所述 如何将numpy.ndarray提升为非整数幂?不能保证一般的nxn矩阵可以提升为给定的非整数幂。此操作对于正整数幂定义良好,然后使用Maclaurin级数可以定义一个矩阵指数函数来逼近矩阵的其他函数 但是,要将矩
numpy.ndarray
的方阵提高到-1/2
注意,我想将矩阵提升为非整数次幂。我不想将矩阵的每个元素都提升为非整数次幂
我知道我可以使用numpy.linalg.matrix\u power
将矩阵提升为整数次幂,如中所述
如何将
numpy.ndarray
提升为非整数幂?不能保证一般的nxn矩阵可以提升为给定的非整数幂。此操作对于正整数幂定义良好,然后使用Maclaurin级数可以定义一个矩阵指数函数来逼近矩阵的其他函数
但是,要将矩阵提升为任意幂,还必须对矩阵对数有一个一致的定义,这仅适用于可逆矩阵,并且涉及到关于唯一性和定义它的元素域的一些微妙之处
这一点在本章中有相当好的阐述
因此,一般来说,这不是对任意nxn矩阵的定义良好的操作,因此它作为ndarray
上的通用函数没有意义
这就像要求一个名为“inverse
”的函数来计算任意二维阵列的逆(不是伪逆或任何近似,而是“实际”逆)。这样的函数一般不存在,因为存在不可逆的二维数组
这有点像是一个狭隘的API决定,即是否有一些函数声称要计算它,并且如果它能够检测到无效的输入参数,例如numpy.linalg.inv
,则只会抛出异常,而不是仅仅提供该功能,并期望用户编写自己的函数来完成它,并处理检查参数有效性、引发异常或任何需要的失败案例行为
inv
无处不在,足以保证这一努力,而开箱即用的任意幂则不然。SciPy有,它计算矩阵平方根。不清楚它是否尝试计算任何特定的平方根(例如,主平方根),但如果输入有平方根,sqrtm
将计算一个。因此,你可以这样做
invsqrt = scipy.linalg.sqrtm(scipy.linalg.inv(input_matrix))
尽管您可能需要进行一些错误处理。如果您指的是矩阵M,其中
numpy.allclose(原始矩阵,numpy.linalg.inv(M.dot(M)))
包含哪一个这样的M?如果你想要元素逆平方根,那就是原始矩阵**-0.5,在我的例子中,M是协方差。我想把矩阵(不是每个元素)提高到-1/2次方。请参阅