Matplotlib:切片plt.imshow()对应切片源numpy数组吗?

时间:2017-02-22 13:48:06

标签: python arrays numpy matplotlib

假设您有以下numpy.array

a=numpy.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])

绘图的

import matplotlib.pyplot as plt
b=plt.imshow(a)

enter image description here

我的问题:如果你"切片"像这样的图像

b=plt.imshow(a)
plt.xlim(0.5,2.5)
plt.ylim(0.5,2.5)

绘制的值对应于

a[1:3,1:3]?

1 个答案:

答案 0 :(得分:1)

每行和每列的跨度或宽度为1.0。矩阵的行跨越x轴,矩阵的列跨越y轴。如果我们从查看矩阵中的行开始,第一个条目将以0.0为中心,下一个条目将以1.0为中心,依此类推。列相同。因为宽度是1.0,所以第一个条目可以说是从-0.5到0.5,然后是0.5到1.5。由于插值,它实际上是对矩阵的邻居值的加权。

如果我们设置这样的情节限制:

plt.xlim(1,2)
plt.ylim(1,2)

我们将在行和列中选择条目2和3(1个索引)之间的区域。但是这些值介于矩阵的值之间。

选择a[1:3,1:3]更像是:

plt.xlim(0.5, 2.5)
plt.ylim(0.5, 2.5)