-1
我想在我的for循環中有一個列向量。它會作爲一個列,但出去行和引起的循環問題,因爲我得到的錯誤行中的for循環
ValueError: could not broadcast input array from shape
(2,2)
into shape(2,)
請幫助。在這裏如何去:
我有一個Xtrue值,其中輸出
Out[77]:
array([[ 44.3161691],
[-10.5871559]])
,然後我進入循環:
xk_1 = Xtrue #initialization before loop
n=103.789 #calculated under some other concept
t=int(float(np.floor(n)))-1 #number of iterations
for k in range(0,t,1):
xk_1[:,k] = A.dot(xk_1[:,k-1]) + B.dot(U) #B.dot(U) is a standard value
的B.dot(U)
輸出(2,1)
array([[-4.903325],
[-9.80665 ]])
A=array([[1, 1],
[0, 1]])
這裏有什麼來自A.dot(xk_1[:,k-1])
形狀(2,)
:
array([ 35.15803805, -9.87264348])
它應該具有的形狀(2,1)
這裏很重要的一點是,我需要的乘法的第k個值時,它是(2,k)
,因爲這是系統如何整部作品。
你好 非常感謝您的回覆。我忘了提及我正在努力學習python,而且我只有一個月大。我很抱歉,但我不明白如何應用您寫給我的代碼的內容。然而,我決定轉置B.dot(U)(比如xk_1 [:,k] = A.dot(xk_1 [:,k-1])+(B.dot(U))。最後的行和列。但現在我收到另一個錯誤,說'IndexError:索引1超出了大小爲1的軸1的邊界',現在我無法弄清楚爲什麼會出現這種情況。如果你能再次回覆我,我真的很高興。非常感謝您 – Buket
您好,我只是想通知您我修正了以下代碼:xk_1 = Xtrue.T t = int(float(np.floor(n))) 對於範圍(1,t,Dt ): xk_1 [k ,:] = A.dot(xk_1 [k-1 ,:]] +(B.dot(U))。其中Xtrue.T將所有內容轉換爲行矩陣。我從1開始循環(因爲k-1)並且將索引從[:,k]改爲[k ,:](因爲它現在是一個行矩陣),但是現在收到錯誤,說'IndexError:index 1已經超出範圍爲1的軸0'我不明白它在說什麼軸,爲什麼我的索引是錯誤的。它看起來對我來說是正確的,但希望有一個簡單的答案。再次感謝你。 – Buket
那麼這不是一個教程網站。已經有大量的信息僅用於學習。我建議你開始閱讀文檔... – Julien