栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将float数组划分为相似的段(集群)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将float数组划分为相似的段(集群)

我认为我将对数据进行排序(如果尚未排序),然后采用相邻的差异。将差异除以较小的数字,即得出百分比变化之间的差异。设置一个阈值,当更改超过该阈值时,启动一个新的“集群”。

编辑:C ++中的快速演示代码:

#include <iostream>#include <vector>#include <algorithm>#include <iterator>#include <numeric>#include <functional>int main() {    std::vector<double> data{         1.91, 2.87, 3.61, 10.91, 11.91, 12.82, 100.73, 100.71, 101.89, 200     };    // sort the input data    std::sort(data.begin(), data.end());    // find the difference between each number and its predecessor    std::vector<double> diffs;    std::adjacent_difference(data.begin(), data.end(), std::back_inserter(diffs));    // convert differences to percentage changes    std::transform(diffs.begin(), diffs.end(), data.begin(), diffs.begin(),        std::divides<double>());    // print out the results    for (int i = 0; i < data.size(); i++) {        // if a difference exceeds 40%, start a new group:        if (diffs[i] > 0.4) std::cout << "n";        // print out an item:        std::cout << data[i] << "t";    }    return 0;}

结果:

1.91    2.87    3.6110.91   11.91   12.82100.71  100.73  101.89200


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/470206.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号