Python 缝合不同网格间距的网格
我使用Python 缝合不同网格间距的网格,python,numpy,Python,Numpy,我使用np.fromfile将二进制文件中的数据读取到numpy数组中。这些数据表示已知间距和形状的栅格上的Z值,因此将1D阵列重塑为栅格形状并使用plt.imshow进行打印没有问题。所以如果我有N个网格,我可以绘制N个子图,在一个图中显示所有数据,但我真正想做的是将它们绘制为一个图像 我不能仅仅堆叠数组,因为每个数组中的数据间隔不同,并且它们具有不同的形状 我的想法是“超级采样”所有网格,以最精细的网格、堆栈和绘图的间距,但我不确定这是否是一个好主意,因为这些网格文件可能会变得相当大 顺便问
np.fromfile
将二进制文件中的数据读取到numpy
数组中。这些数据表示已知间距和形状的栅格上的Z值,因此将1D阵列重塑为栅格形状并使用plt.imshow
进行打印没有问题。所以如果我有N个网格,我可以绘制N个子图,在一个图中显示所有数据,但我真正想做的是将它们绘制为一个图像
我不能仅仅堆叠数组,因为每个数组中的数据间隔不同,并且它们具有不同的形状
我的想法是“超级采样”所有网格,以最精细的网格、堆栈和绘图的间距,但我不确定这是否是一个好主意,因为这些网格文件可能会变得相当大
顺便问一下:假设我想这么做,我该怎么做:
0, 1, 2
3, 4, 5
致:
我愿意接受任何建议
谢谢
沙哈尔如果你只是策划,答案是:不要
plt.imshow
有一个关键字参数extent
,可用于在打印时缩放图像。除此之外,我建议使用scipy.ndimage.zoom,其顺序为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
关键字。您可以编写smth,如循环
,它将每个元素附加到矩阵中使用im.show
“范围”不是我要找的,我需要每个网格/数组/文件/任何你想叫它的东西的整个范围。我不需要缩放,我需要把所有的东西都放在一起,这样我就可以在一幅图像中绘图。@Shahar,所以你要对它们进行实际计算,而不仅仅是绘图。然后可能使用scipy.ndimage.zoom
,除非您没有scipy。如果这一切都很正常,你需要特别小心RAM,可能还有其他选择,但请告诉我们更多关于你实际使用它们的情况,因为关键步骤似乎不仅仅是绘图。我做了一些计算,但这不是问题所在。如上所述,我可以通过plt.imshow
看到我所做的所有操作的结果,但一旦处理完每个“补丁”,我想将它们合并到一个图像中。我意识到我的图像的某些部分将是低分辨率补丁的过采样版本,但我不关心这一点。@Shahar那么,请解释为什么范围关键字不是您想要的。你试过了吗?我不明白如何将多个数据数组传递给imshow,并将它们显示为一个图像。我错过什么了吗?
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)