2017-02-22 59 views
1

假设你有以下numpy.array:您与Matplotlib:切片plt.imshow()对应切片源numpy数组吗?

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

enter image description here

我的问题绘制

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

:如果你的 “切片” 像这样

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

做所绘制的值对应于

a[1:3,1:3]? 

回答

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) 
+0

所以,从本质上讲,你的答案是“是”,但我需要改变'limits'占值的准确位置。是这样吗?你的回答是吗? – FaCoffee

+0

本质上是“是” - 限制必须符合:) –

+0

是否有办法转弯插补? –