两个二维阵列从哪里开始相互重叠?

2024-10-01 09:21:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在正在处理模型输出,我似乎无法想出一个很好的方法来组合两个数据数组。数组A和B存储不同的数据,每个数组中的条目对应于某个空间(x,y)点——A保存一些参数,B保存模型输出。问题是B是a的一个空间分段——也就是说,如果模型是针对整个世界的,a将存储地球上每个点的参数,而B只存储非洲这些点的模型输出。在

所以我需要找出B与A的偏移量——换句话说,我需要找出它们开始重叠的索引。如果A.shape=(10001500),那么B是(750:850,200:300)的一部分,还是(783:835427:440)小节?我有与A和B关联的数组,它们存储每个网格点的(x,y)位置。在

这似乎是一个简单的问题——找出两个数组重叠的地方。我可以用凌乱的空间的KDTree很简单,但速度很慢。有什么更好的主意吗?在


Tags: 数据方法模型网格地球参数地方世界
3条回答

你能多说几句吗?你用什么型号的?你在做什么模特?如何计算?在

你能使尺寸匹配以避免配合吗?(也就是说,如果B不依赖于A的所有部分,则只插入B所建模的A部分,或者计算B中不与A重叠的部分的无聊值,并在以后删除这些值)

I have arrays associated with both A and B which store the (x,y) positions of the gridpoints for each.

在这种情况下,答案应该很简单。。。在

这两个网格是否严格在同一网格方案上?假设他们是,你可以做一些类似的事情:

np.argwhere((Ax == Bx.min()) & (Ay == By.min())) 

假设两个网格的世界坐标以与网格的指示符相同的方向增加,这将给出子网格的左下角。(如果它们不在同一方向上增加(即负数dxdy),则只给出另一个角点)

在下面的例子中,我们显然可以从ix = (Bxmin - Axmin) / dx等计算适当的指标,但是假设你有一个更复杂的网格系统,这仍然可以工作。然而,这是假设两个网格在同一网格方案上!如果他们不是。。。在

^{pr2}$

I need to find the indexes at which they start to overlap

那么您是从A中还是从B中查找索引?B是严格矩形的吗?在

找到B的边界盒或凸壳是非常便宜的。在

相关问题 更多 >