在 Numpy 中矢量化 QR Python
Vectorize QR in Numpy Python
您好,我正在尝试按照文档中的建议对 numpy 中的 QR 分解进行矢量化 here,但是我一直遇到维度问题。我对自己做错了什么感到困惑,因为我相信以下内容遵循文档。有谁知道这有什么问题:
import numpy as np
X = np.random.randn(100,50,50)
vecQR = np.vectorize(np.linalg.qr)
vecQR(X)
如何将 np.linalg.qr
映射到 arr 的第一个轴?:
In [35]: np.array(list(map(np.linalg.qr, X)))
Out[35]:
array([[[[-3.30595447e-01, -2.06613421e-02, 2.50135751e-01, ...,
2.45828025e-02, 9.29150994e-02, -5.02663489e-02],
[-1.04193390e-01, -1.95327811e-02, 1.54158438e-02, ...,
2.62127499e-01, -2.21480958e-02, 1.94813279e-01],
[ 1.62712767e-01, -1.28304663e-01, -1.50172509e-01, ...,
1.73740906e-01, 1.31272690e-01, -2.47868876e-01]
来自文档:"By default, pyfunc is assumed to take scalars as input and output."。
所以你需要给它一个签名:
vecQR = np.vectorize(np.linalg.qr, signature='(m,n)->(m,p),(p,n)')
您好,我正在尝试按照文档中的建议对 numpy 中的 QR 分解进行矢量化 here,但是我一直遇到维度问题。我对自己做错了什么感到困惑,因为我相信以下内容遵循文档。有谁知道这有什么问题:
import numpy as np
X = np.random.randn(100,50,50)
vecQR = np.vectorize(np.linalg.qr)
vecQR(X)
如何将 np.linalg.qr
映射到 arr 的第一个轴?:
In [35]: np.array(list(map(np.linalg.qr, X)))
Out[35]:
array([[[[-3.30595447e-01, -2.06613421e-02, 2.50135751e-01, ...,
2.45828025e-02, 9.29150994e-02, -5.02663489e-02],
[-1.04193390e-01, -1.95327811e-02, 1.54158438e-02, ...,
2.62127499e-01, -2.21480958e-02, 1.94813279e-01],
[ 1.62712767e-01, -1.28304663e-01, -1.50172509e-01, ...,
1.73740906e-01, 1.31272690e-01, -2.47868876e-01]
来自文档:"By default, pyfunc is assumed to take scalars as input and output."。 所以你需要给它一个签名:
vecQR = np.vectorize(np.linalg.qr, signature='(m,n)->(m,p),(p,n)')