我正在嘗試按照文檔在此處的建議對 numpy 中的 QR 分解進行矢量化,但是我不斷遇到尺寸問題。我對自己做錯了什么感到困惑,因為我相信以下內容遵循文檔。有誰知道這有什么問題:import numpy as npX = np.random.randn(100,50,50)vecQR = np.vectorize(np.linalg.qr)vecQR(X)
2 回答

四季花海
TA貢獻1811條經驗 獲得超5個贊
來自文檔:“默認情況下,假定 pyfunc 將標量作為輸入和輸出。”。所以你需要給它一個簽名:
vecQR = np.vectorize(np.linalg.qr, signature='(m,n)->(m,p),(p,n)')

繁華開滿天機
TA貢獻1816條經驗 獲得超4個贊
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]
添加回答
舉報
0/150
提交
取消