簡體   English   中英

當嘗試在循環中乘以矩陣元素時,錯誤“只有長度為1的數組可以轉換為Python標量”?

[英]The error “only length-1 arrays can be converted to Python scalars” when trying to multiply matrix elements within a loop?

函數alpha_j應返回3x3矩陣。 輸入A是塊對角矩陣,a是標量,(V_0 * 3 * chi)/(chi + 3)。 Rho是一個隨機的3x1矩陣。

我試圖通過將rho,標量alpha和矩陣A相乘來創建這個3x3矩陣。

def alpha_j(a, A):
    alph = np.array([[0,0,0],[0,0,0],[0,0,0]],complex)
    rho = np.random.rand(3,1)
    for i in range(0, 2):
        for j in range(0, 2):
            alph[i][j] = (rho[i] * a * A[i][j])
    return alph

chi = 10 + 1j
V_0 = (0.05)**3
alpha = (V_0 * 3 * chi)/(chi + 3)
A = np.matlib.identity(3)

test = alpha_j(alpha, A)
print(test)

我不斷拋出錯誤“只有長度為1的數組可以轉換為Python標量。” 我不明白出了什么問題。 請幫忙:/

您的索引似乎不正確。 當您需要將[i,j]用於numpy數組時,您正在使用[i][j]

>> A = np.matlib.identity(3)
>> A
matrix([[1., 0., 0.],
        [0., 1., 0.],
        [0., 0., 1.]])

>> A[0][0]
matrix([[1., 0., 0.]])
>> A[0,0]
1.0

因此,當你期待一個標量時,你會得到一個行向量。

我應該提一下,谷歌搜索你的錯誤信息出現了TypeError:只有長度為1的數組可以轉換為Python標量,而情節顯示 ,這是有幫助的。

print(type(suspect_thing))或設置斷點並使用調試器來檢查變量也是一種很好的做法。 這可以將這些問題搞砸到你可以看到它們的地方。 例如,我將您的代碼復制到我的編輯器中並運行它,注意出現問題的行號。 然后我能夠看到需要檢查哪些變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM