将2D聚簇坐标分配给形状

问题描述 投票:0回答:1

我考虑2D(10x10)矩阵的情况,该矩阵当前填充有零(在某种意义上是非活动网格)。在某些时候,某些矩阵元素将变为活动状态(因此,将赋予值1)。

发生这种情况的方式是在将要激活的矩阵上传递(X,Y)坐标列表。顺序或先出现哪些元素是未知的。在矩阵上变为活动状态的区域可以与矩阵中的一个元素(1x1)一样大,或者网格(群集)的某些部分以特定模式变为活动状态,如本例所示:

Clusters of information on a matrix

首先,我可以将活跃的相邻元素捆绑在一起,并获得有关该“集群”的一些信息:集群中活跃元素的数量以及行和列的宽度。例如,右上方的群集具有3个活动元素,行宽为2,列宽为2。

我的目标是使这些聚类与预定义形状匹配,并通过其ID进行标识:

Shapes

具有每个集群的活动元素的数量,可以将类别进行第一次粗划分:

  • 如果一个元素在集群中处于活动状态->形状ID 0
  • 如果两个元素在集群中处于活动状态->形状ID 1或2
  • 如果集群中有三个元素处于活动状态->形状ID 3-8
  • 如果集群中有四个元素处于活动状态,则-> Shape ID 9-27

使用第二种类型的信息(行,活动元素簇的列宽),可以再次拆分每个类别。以类别中包含三个活动元素的类别进行分类:

  • 如果列宽为3而行宽为1->形状ID 5
  • [如果列宽为2而行宽为2->形状ID 3、4、6或7
  • 如果列宽为1而行宽为3->形状ID 8

对于四个集群也可以这样做。

按照这种逻辑,我可以解决我的问题并将一些聚类分配给它们的正确形状。我的问题现在出现在信息(关于有效元素的数量,它们的行和列宽度)不足的形状上。

一个例子是图1的右上和右下集群。在这里,两个元素均处于活动状态,列和行的宽度= 2。

如何再次将其分开并分配正确的形状?

python matrix cluster-analysis shapes
1个回答
0
投票

[也许尝试“标准化”您的集群坐标-也就是说,给定一个集群(集群的表示形式)中坐标的列表C = [(i1,j1)...(ik,jk)],让(i *,j *)是列表中按字典顺序排列的第一个点(即最左下角的点)。从所有聚类坐标中减去i *和j *,对坐标进行排序,然后对排序后的坐标进行哈希处理。您可以确保唯一的簇形状具有唯一的哈希,而具有相同形状的簇现在具有不同的哈希。无需分配特定的集群ID即可完成此操作,但是可以通过查看哈希表的键集轻松恢复它们。希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.