-1
我正在寫一個函數,我想在其中存儲2維矩陣作爲更大的2維矩陣的子集。所有的代碼似乎都正常工作,除了來自Einsum的結果沒有存儲在矩陣E中(第3行到最後一行)。對於如何解決這個問題,有任何的建議嗎?索引numpy數組不工作
def two_cycles(A):
nonzeroSubset = np.diag(la.matrix_power(A,4) - la.matrix_power(A,2))
x = np.argsort(nonzeroSubset)[:100]
subset = A[x,:][:,x]
n = len(A)
E = np.zeros((n,n))
E[x][:,x] = np.einsum('ij,ji->ij',subset,subset)
fourCycles = np.array(np.nonzero(E)).T
return fourCycles
您可以將您的示例程序縮減爲只能在兩個維度上運行的程序嗎?可能使它更容易調試。 –
我更新了這個例子。 – user3394045
「E [x] [:, x,:,:] [:,:,x,:] [:,:,:,x] = ...」 - 好吧,您需要放慢速度並學習高級索引規則。這是分配給您要分配的副本副本的副本。 – user2357112