我想使用 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 轴标签。如果你想覆盖这个,你需要自己手动设置刻度。使用matplotlib.pyplot.xticks
和 matplotlib.pyplot.yticks
这样做:
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。
我们得到:
关于python - 对于形状为 (2,2) 的 numpy 数组,为什么 imshow 命令显示沿 x 和 y 轴的一系列值?这些值是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56521608/