【问题标题】:How do I reflect a matrix in matplotlib?如何在 matplotlib 中反映矩阵?
【发布时间】:2013-02-20 13:57:52
【问题描述】:

我在 matplotlib 中创建了一个矩阵。如您所见,它仅覆盖矩阵的一半。 无论如何,我可以将点反射到矩阵的另一侧,这样我就可以填充整个矩阵了吗?

使用imshow生成

【问题讨论】:

  • 你是如何生成这张图片的(imshowpcolor,手工绘制补丁)?

标签: python matrix numpy matplotlib


【解决方案1】:

虽然 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()

【讨论】:

  • 对于大型矩阵,使用A += A.T; A[np.diag_indices_from(A)] /= 2会更高效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-04
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
相关资源
最近更新 更多