-1
以下代碼是嘗試在Python 3.6.1中創建一個成功的矩陣。正如你所看到的,我有我的阿爾法和布拉沃矩陣分配,並希望代碼產生一個查理矩陣(列表)充滿了阿爾法和布拉沃矩陣相乘的結果。我的問題是,當我運行模塊時,它說c沒有定義;如果我請求a或b,那也是一樣。專業提示或指針的人?謝謝。顯示未分配的Python矩陣代碼變量
import math
def matrix(a, b, c):
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b = [[3, 2, 1], [4, 4, 4], [3, 6, 8]]
c = [[], [], []]
for c in matrix:
c[1][1] = a[1][1] * b[1][1] + a[1][2] * b[2][1] + a[1][3] * b[3][1]
c[1][2] = a[1][1] * b[1][2] + a[1][2] * b[2][2] + a[1][3] * b[3][2]
c[1][3] = a[1][1] * b[1][3] + a[1][2] * b[2][3] + a[1][3] * b[3][3]
c[2][1] = a[2][1] * b[1][1] + a[2][2] * b[2][1] + a[2][3] * b[3][1]
c[2][2] = a[2][1] * b[1][2] + a[2][2] * b[2][2] + a[2][3] * b[3][2]
c[2][3] = a[2][1] * b[1][3] + a[2][2] * b[2][3] + a[2][3] * b[3][3]
c[3][1] = a[3][1] * b[1][1] + a[3][2] * b[2][1] + a[3][3] * b[3][1]
c[3][2] = a[3][1] * b[1][2] + a[3][2] * b[2][2] + a[3][3] * b[3][2]
c[3][3] = a[3][1] * b[1][3] + a[3][2] * b[2][3] + a[3][3] * b[3][3]
return c
謝謝詹姆斯。我現在都知道Numpy模塊的存在。但是,假設我選擇不使用像Numpy這樣的模塊,並且決定按照我在上面的原始代碼中所做的那樣進行修改:如果我固定了索引位置(從我沒有做的正確位置開始),它會起作用嗎? ,如果我只是爲c變量(即[[0,0,0],[0,0,0],[0,0,0]]而不是列表的空列表分配了佔位符值) ? – Feverdreamer44
是的,這將工作。與索引中的硬編碼相比,有更高效的方法來創建'c'輸出。我將修改我的答案以顯示如何。 – James
我真的很感謝詹姆斯的幫助。你能解釋一下你提供的代碼中的符號嗎,特別是如何生成點積?我不明白使用xx和yy,或者爲什麼使用bT:xx,yy代表zip(x,y)中的yy)代表b中的y – Feverdreamer44