3
我試圖創建一個三維陣列,Tusing numpy的定義如下:高效陣列創建在numpy的
T_ {I,J,K} = \ delta_ {I,K} - \增量{Ĵ, k}
其中\ delta_ {i,j}是Kronecker delta函數(當i = j時爲1,否則爲0)。我想知道用numpy做這個最有效的方法。我可以使用for循環創建兩個三維數組並將其減去。但我懷疑有一種更快更自然的方法。非常感激任何的幫助。
我試圖創建一個三維陣列,Tusing numpy的定義如下:高效陣列創建在numpy的
T_ {I,J,K} = \ delta_ {I,K} - \增量{Ĵ, k}
其中\ delta_ {i,j}是Kronecker delta函數(當i = j時爲1,否則爲0)。我想知道用numpy做這個最有效的方法。我可以使用for循環創建兩個三維數組並將其減去。但我懷疑有一種更快更自然的方法。非常感激任何的幫助。
相當於delta是在numpy的eye
:
delta = numpy.eye(5)
T = delta[:,None,:] - delta[None,:,:]
的None
創建<虛擬>尺寸(不帶任何附加存儲器)用於在numpy的廣播。
太棒了!只是這樣我才能更好地理解這一點。假設我只想爲所有j創建一個由X_ {i,j,k} = X_ {i,k}定義的三維數組X.上面的第一項似乎沒有這樣做,因爲第一維必須有長度。我會怎麼做? – stableMatch
@gzc是的,我認爲有一個錯字。我們想要的是delta [:,None,:] - delta [無,:,:] – stableMatch
@gzc:已更正。 – Daniel