我需要在SciPy中生成一个又高又细的随机列正交矩阵;也就是说,行数n
远远大于列数p
的多个数量级(比如n = 1e5
和p = 100
)。我知道scipy.stats.ortho_group
生成一个平方正交矩阵。然而,在我的例子中,生成一个n
-by-n
随机正交矩阵然后保留第一列是不可行的。。。有没有更节省时间和空间的方法?
最佳答案
您可以先生成一个又高又薄的随机矩阵,然后执行qr分解。
a = np.random.random(size=(100000, 100))
q, _ = np.linalg.qr(a)
。