Armadillo 库中的 sort_index() 函数给出了错误的结果

sort_index() function in Armadillo library gives wrong result

我正在尝试使用 Armadillo C++ 库中的 sort_index() 函数 (link here)

这是我的代码:

#include <armadillo>
#include <iostream>
using namespace arma;
using namespace std;

int main()
{
    vec test = {2, 5, 1};
    test.print();
    sort_index(test).print();
    cout<<"===\n";
    sort_index(test, "descend").print();

    return 0;
}

结果是:

2.0000
5.0000
1.0000
    2
    0
    1
===
    1
    0
    2

我认为降序是正确的,但升序是错误的。它看起来就像降序的反映版本。这是一个错误吗?如果两个结果都是正确的,那么 sort_index() 实际上做了什么?

sort_index(test, "descend").print();

将按降序打印(从高到高)。

sort_index(test, "ascend").print();

按升序打印(从小到大,降序的反映)这是调用函数时默认使用的。

这似乎有什么问题?查看 sort_index() here.

的文档

结果正确。函数 sort_index 的工作原理与 Python 的 numpy.argsort 相同。它产生原始列表的索引以生成排序列表。

>>> import numpy as np
>>> x = np.array([2, 5, 1])
>>> idx = np.argsort(x); print(idx)
[2 0 1]
>>> x_sorted = x[idx]; print(x_sorted)
[1 2 5]