2013-06-30 81 views

回答

9

您可以简单地把它添加到其转:

>>> m 
array([[0, 0, 0, 0], 
     [1, 0, 0, 0], 
     [2, 3, 0, 0], 
     [4, 5, 6, 0]]) 
>>> m + m.T 
array([[0, 1, 2, 4], 
     [1, 0, 3, 5], 
     [2, 3, 0, 6], 
     [4, 5, 6, 0]]) 
7

可以使用numpy.triu_indices或numpy.tril_indices:

>>> a=np.array([[0, 0, 0, 0], 
...    [1, 0, 0, 0], 
...    [2, 3, 0, 0], 
...    [4, 5, 6, 0]]) 
>>> irows,icols = np.triu_indices(len(a),1) 
>>> a[irows,icols]=a[icols,irows] 
>>> a 
array([[0, 1, 2, 4], 
     [1, 0, 3, 5], 
     [2, 3, 0, 6], 
     [4, 5, 6, 0]]) 
+0

@DSM我已经改正了我原来的答案,现在得到对称在我的数组 – rtrwalker

+0

这是比DSM更好的答案,因为它不依赖于对角线元素为零。 –