如何在matplotlib中反射矩阵?

3 投票
1 回答
2054 浏览
提问于 2025-04-17 16:30

在这里输入图片描述

我在matplotlib中创建了一个矩阵。你可以看到它只覆盖了矩阵的一半。有没有办法把这些点反射到矩阵的另一边,这样我就可以填满整个矩阵呢?

这个矩阵是用 imshow 生成的。

1 个回答

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

撰写回答