Python 对于具有形状(2,2)的numpy数组,为什么imshow命令沿x轴和y轴显示一系列值?这些价值观是什么?

Python 对于具有形状(2,2)的numpy数组,为什么imshow命令沿x轴和y轴显示一系列值?这些价值观是什么?,python,matplotlib,Python,Matplotlib,我想使用imshow将过滤器权重显示为颜色。但我得到了沿y轴和x轴的一系列值。我希望只有2个xtick标签和2个ytick标签。我怎样才能克服这个问题 a = np.array([[0.1665, 0.2390],[0.2034,0.0694]]) plt.imshow(a,cmap=plt.cm.gray) 显示图像时,Matplotlib会自动计算出x轴和y轴标签。如果要覆盖此选项,则需要自己手动设置刻度。使用并执行以下操作: import matplotlib.pyplot as plt

我想使用imshow将过滤器权重显示为颜色。但我得到了沿y轴和x轴的一系列值。我希望只有2个xtick标签和2个ytick标签。我怎样才能克服这个问题

a = np.array([[0.1665, 0.2390],[0.2034,0.0694]])
plt.imshow(a,cmap=plt.cm.gray)

显示图像时,Matplotlib会自动计算出x轴和y轴标签。如果要覆盖此选项,则需要自己手动设置刻度。使用并执行以下操作:

import matplotlib.pyplot as plt
import numpy as np

a = np.array([[0.1665, 0.2390], [0.2034,0.0694]])
plt.imshow(a, cmap=plt.cm.gray, vmin=0, vmax=1)

# New
plt.xticks(list(range(a.shape[1])))
plt.yticks(list(range(a.shape[0])))
为了设置x和y标签,我创建了一个从0到每个维度中尽可能多的元素的列表,以便每个过滤器权重在代表性图像中表示为一个位置。最后一个注意事项是,如果不指定要在图像中显示的最小和最大强度,它将默认为2D数组中的最小和最大值。假设权重介于
[0,1]
之间,将
imshow
调用中的
vmin
vmax
属性分别设置为0和1

我们得到:


如果我使用aspect='auto',我会得到正确的范围500,但x轴仍然是一个值范围。沿x轴的这个值范围代表什么?在实际代码中,我必须以imshow的形式绘制(500,2)数组。每个轴代表图像的相应像素坐标,因此x轴从0到1变化,而y轴从0到499变化。您使用的是
imshow
,因此轴自然代表图像中的像素坐标。我添加了一个显示值范围的图形。左上框的值范围为-0.50到0.50。在此框中,像素值应为0.1665。@权重将可视化为强度值。它们不会在轴上显示。不幸的是,您误解了
imshow
中标签的用途。如果你想让过滤器的权重在轴上移动,你需要使用其他的东西-也许是散点图?看看每个像素的中心。这是一个图像坐标。每个像素有一个1 x 1的区域,因此每个像素的上下跨度为0.5像素,左右相同。我真的没有其他方法来解释这一点,我将在这里停止我们的讨论。