Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 缝合不同网格间距的网格_Python_Numpy - Fatal编程技术网

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)