2017-03-27 56 views

回答

2

方法#1您可以創建一個對角面具與np.eye,然後使用布爾索引分配 -

mask = np.eye(A.shape[0], dtype=bool) 
A[mask] = 1.0 

方法2使用基於整數索引 -

r = np.arange(A.shape[0]) 
A[r,r] = 1.0 

方法#3重塑爲2D然後分配到行中 -

n = A.shape[0] 
A.reshape(-1,A.shape[-1])[np.arange(n)*(n+1)] = 1.0 
+0

它確實有效。但如何理解呢?該文檔說「掩碼」索引數組返回數據的副本,而不是視圖。 https://docs.scipy.org/doc/numpy/user/basics.indexing.html –

+0

@ChongWang我們不是用掩碼提取數據,而是分配數據。所以,這裏沒問題。 – Divakar

+0

任何文檔詳細說明分配行爲? –