4
import numpy as np
def qrhouse(A):
(m,n) = A.shape
R = A
V = np.zeros((m,n))
for k in range(0,min(m-1,n)):
x = R[k:m,k]
x.shape = (m-k,1)
v = x + np.sin(x[0])*np.linalg.norm(x.T)*np.eye(m-k,1)
V[k:m,k] = v
R[k:m,k:n] = R[k:m,k:n]-(2*v)*(np.transpose(v)*R[k:m,k:n])/(np.transpose(v)*v)
R = np.triu(R[0:n,0:n])
return V, R
A = np.array([[1,1,2],[4,3,1],[1,6,6]])
print qrhouse(A)
這是qr分解代碼,但我不知道爲什麼發生錯誤。在V[k:m,k] = v
不能從形狀(3,1)廣播輸入數組到形狀(3,)
value error :
could not broadcast input array from shape (3,1) into shape (3)
錯誤準確告訴你發生了什麼!你爲什麼不穀歌「numpy廣播」弄清楚它是什麼?使用'V [k:m,k] = v.reshape((3,1))',它就可以工作。 – Julien
我不得不重塑V [k:m,k],因爲它的形狀是(3),v的形狀是(3,1)。但我不能這樣做.. – Colin