我需要在SciPy中生成一个又高又细的随机列正交矩阵;也就是说,行数n远远大于列数p的多个数量级(比如n = 1e5p = 100)。我知道scipy.stats.ortho_group生成一个平方正交矩阵。然而,在我的例子中,生成一个n-by-n随机正交矩阵然后保留第一列是不可行的。。。有没有更节省时间和空间的方法?

最佳答案

您可以先生成一个又高又薄的随机矩阵,然后执行qr分解。

a = np.random.random(size=(100000, 100))
q, _ = np.linalg.qr(a)

08-25 01:31