拼接不同网格间距的网格

时间:2012-08-28 08:52:32

标签: python numpy

我使用numpy将二进制文件中的数据读入np.fromfile数组。这些数据表示网格上的 Z 值,其间距和形状是已知的,因此将1D数组重新整形为网格形状并使用plt.imshow绘图没有问题。因此,如果我有 N 网格,我可以绘制 N 子图,在一个图中显示所有数据,但我真正想做的是将它们绘制为一个图像。

我不能只是堆叠数组,因为每个数组中的数据间隔不同,因为它们有不同的形状。

我的想法是将所有网格“超级采样”到最精细的网格,堆叠和绘图的间距,但我不确定这是一个好主意,因为这些网格文件会变得非常大。

顺便说一下:假设我想这样做,我该怎么做:

    0, 1, 2
    3, 4, 5

为:

    0, 0, 1, 1, 2, 2
    0, 0, 1, 1, 2, 2
    3, 3, 4, 4, 5, 5
    3, 3, 4, 4, 5, 5

我愿意接受任何建议。

谢谢,

沙哈尔

1 个答案:

答案 0 :(得分:0)

如果您只是绘图的答案是:不要。 plt.imshow有一个关键字参数extent,可用于在绘图时缩放图像。除了我建议scipy.ndimage.zoom,order = 0,它相当于重复值,但你可以轻松地缩放到任何大小或使用不同的顺序来获得一些平滑的插值。 np.tile也可以作为非常简单的缩放选项。

以下是一个例子:

a = np.arange(9).reshape(3,3)
b = np.arange(36).reshape(6,6)

plt.imshow(a, extent=[0,1,0,1], interpolation='none')
plt.imshow(b, extent=(1,2,0,1), interpolation='none')
# note scaling is "broke"
plt.xlim(0,2)

当然为了获得两者的相同颜色范围,您应该添加vim=...vmax个关键字。