Python 正交化矩阵numpy

Python 正交化矩阵numpy,python,numpy,orthogonal,Python,Numpy,Orthogonal,我试图正交化2d numpy数组,但失败了。我使用了这种方法并将其转换为以下代码: def sym(w): return w.dot((w.T.dot(w))**(-.5)) 但是 a.dot(a.T)应输出标识。sym的工作定义为: from scipy.linalg import sqrtm, inv def sym(w): return w.dot(inv(sqrtm(w.T.dot(w)))) 这是因为将一个numpy矩阵的幂提高到-.5并不等同于取,然后将其反转,

我试图正交化
2d numpy数组
,但失败了。我使用了这种方法并将其转换为以下代码:

def sym(w):
    return w.dot((w.T.dot(w))**(-.5))
但是


a.dot(a.T)
应输出标识。

sym的工作定义为:

from scipy.linalg import sqrtm, inv

def sym(w):
    return w.dot(inv(sqrtm(w.T.dot(w))))

这是因为将一个numpy矩阵的幂提高到-.5并不等同于取,然后将其反转,这是公式所要求的。

函数
sym
与线
a.dot(a.t)
-应该吗?你是对的,我将编辑该示例!我发现
**.5
的行为通常非常奇怪,因为让
a
成为一个正方形矩阵:
b=a**.5
然后
a!=b、 dot(b.T)
。这不是我所期望的…我相信你想要矩阵平方根,它似乎是-.5的幂,而不是。你知道这是否意味着它是矩阵平方根的倒数吗?(另外,您能否更新您的问题以显示新代码?)
from scipy.linalg import sqrtm, inv

def sym(w):
    return w.dot(inv(sqrtm(w.T.dot(w))))