两个数组之间的数据聚类和比较
Data clustering and comparison between two arrays
i有的。我如何挑选出重复的人,并以最少的比较将它们放入每个组中?最好在C 中。
例如给定
阵列1 = {1,1,2,2,3,4,5,5,1,1,2,2,2,4,5,8,…}
阵列2 = {2,1,1,2,2,2,4,7,7,8,8,8,2,2,4,4,4,8,…}。
首先,我要聚集数据。
数组1 = {组1 = {1,1,1,1,1,…},组2 = {2,2,2,2,2,…},组3 = {3,…},组4 = {4,4,…},组5 = {5,5,5,…},组6 = {8,…}}。
数组2 = {组1 = {1,1,…},组2 = {2,2,2,2,2,2,2…},组3 = {4,4,4,4,…},组4 ={7,7,…},组5 = {8,8,8…}}。
,其次,我想要数据匹配。
数组1的第1组==数组2的第1组
数组1的第2组==数组2的第2组
数组1的第4组==数组2的第3组
数组1的第6组==数组2的第5组
如何在C 中解决此问题?请给我您的精彩提示。
此外,我将详细解释我的问题。我有两个数据集,这些数据集以立体声图像计算。数组1是左相机的数据,而数组2是右相机的数据。我的最终目标是匹配具有相同值的组,例如Array1的第6组和数组2的第5组。数据排序不是我的考虑。我只想在两个数组中的组之间找到相同的值。(您是否建议我先使用数据订购来减少比较数量?)。
为了解决此问题,我应该使用" std :: map"进行数据聚类,并比较这些n!时间(n:no。阵列1或2中的组)?这是我能做的最好的方法吗?
我想获得您的建议。感谢您分享我的问题。
我的结论
我的方法是在C STL中使用地图容器。
-
制作2个地图容器(array1_map,array2_map)。
-
将每个数组的值插入地图容器中作为键,然后将每个数组的索引作为值插入地图中。(两个阵列的两个数据都有序地保存在地图中,而无需重复。)
-
使用find()映射容器的成员功能进行数据匹配。
-
数据匹配后,我能够获取具有匹配键(相应的键)的每个数组的索引。
感谢您的所有有用的答案!
我看到的最简单方法是构造每个数组的直方图。然后,您可以将这些直方图进行比较。这应该是o(nlogn)将每个数组转换为一个直方图,其中n是数组大小,然后o(n)比较 N
是阵列中唯一元素的数量(地图的大小)。看起来像
int arr1[] = {...};
int arr2[] = {...};
std::map<int, int> arr1_histogram, arr2_histogram;
for (auto e : arr1)
arr1_histogram[e]++;
for (auto e : arr2)
arr2_histogram[e]++;
if (arr1_histogram == arr2_histogram)
// true case
else
// false case
- 在数据类型类的列表中查找 elem
- K 均值聚类 R 树提升
- C++中的聚类示例
- 两个数组之间的数据聚类和比较
- 常量数据持有者类的c++模板
- TSP 的聚类分析算法
- 如何使用opencv c++的聚类来根据面积和高度对连接的组件进行分类
- 对私有数据进行类 - 在堆栈或堆上
- 数据类型类和读取器/解析器之间的耦合
- 包含不同数据的类设计
- 有没有一种方法可以使用引用而不是指针来处理相互包含数据的类
- 用于聚集层次聚类的OpenCV机器学习库
- C++数据分组类和常量访问
- K 表示视频所有帧的直方图聚类
- 类更改数据其他类的成员
- OpenCV 聚类袋的单词 k 表示
- C++将具有非常相关数据的类 Tree 拆分为两个类
- 用自适应MeanShift对特征空间-SURF描述符进行聚类
- 从给定的点云数据中提取一组特征和聚类数据
- 如何为聚类分析创建n维测试数据