• c++ 11实现 numpy argsort函数


    numpy的函数确实很强大,随随便便一个函数就需要c++很多代码去实现。

    今天刚好看到argsort函数,就找了一下c++实现。

    #include <iostream>
    #include <random>
    #include <algorithm>
    // 实现argsort功能
    template<typename T> std::vector<int> argsort(const std::vector<T>& array)
    {
        const int array_len(array.size());
        std::vector<int> array_index(array_len, 0);
        for (int i = 0; i < array_len; ++i)
            array_index[i] = i;
    
        std::sort(array_index.begin(), array_index.end(),
            [&array](int pos1, int pos2) {return (array[pos1] < array[pos2]); });
    
        return array_index;
    }
    
    
    
    int main()
    {
        std::default_random_engine generator;
        std::uniform_int_distribution<int> distribution(1, 20);
        std::vector<int> vec_data;
        for (int i = 0; i < 10; ++i)
            vec_data.push_back(distribution(generator));
        for (int item : vec_data)
            std::cout << item << "	";
        std::vector<int> index = argsort(vec_data);
        std::cout << std::endl;
        for (int item : index)
            std::cout << item << "	";
        system("pause");
    }

    输出结果,第一行是原始数据,第二行是排序后索引,可见满足升序索引,1对应3,9对应4,4对应5 ……。

    13      3       15      6       5       12      10      6       19      4
    1       9       4       3       7       6       5       0       2       8

    参考:https://blog.csdn.net/m_buddy/article/details/86262717

  • 相关阅读:
    hashlib模块
    configparser模块
    xml模块和shelve模块
    json与pickle模块
    3/30
    os模块
    sys模块
    shutil模块
    random模块
    2月书单《编码隐匿在计算机软硬件背后的语言》 13-16章
  • 原文地址:https://www.cnblogs.com/juluwangshier/p/13343734.html
Copyright © 2020-2023  润新知