2013-02-20 69 views
3

enter image description here如何在matplotlib中反映矩陣?

我在matplotlib中創建了一個矩陣。正如你所看到的,它只覆蓋了矩陣的一半。 無論如何,我可以將點反射到矩陣的另一側,以便填充整個矩陣?

使用imshow

+0

您是如何產生這個圖像('imshow','pcolor',通過手繪補丁)? – tacaswell 2013-02-20 15:04:51

回答

4

雖然Mr.E.的答案是(幾乎)是正確的,我覺得這需要一個完整的最小工作示例產生。訣竅是繪製A + A.T。但是,當你這樣做時,你會重複計算對角線,因此你必須將該部分減掉。

import numpy as np 
import pylab as plt 

# Create a sample matrix like your image 
A = np.random.random((100,100)) * .52 
A = np.rint(A) 
for idx in np.ndindex(A.shape): 
    if idx[0]>idx[1]: A[idx] = 0 

plt.subplot(1,2,1) 
plt.imshow(A,interpolation='none') 

# Make a new matrix B = A + A.T - diagonal(A) 
B = A + A.T - np.diag(np.diag(A)) 
plt.subplot(1,2,2) 
plt.imshow(B,interpolation='none') 
plt.tight_layout() 
plt.show() 

enter image description here

+2

對於大型矩陣,「A + = A.T; A [np.diag_indices_from(A)]/= 2'。 – 2013-02-20 15:17:27