我正在尝试使用Armadillo C ++库(link here)中的sort_index()
函数。
这是我的代码:
#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()
实际上做了什么?
答案 0 :(得分:0)
sort_index(test, "descend").print();
将按降序打印(最高位)。
sort_index(test, "ascend").print();
按升序打印(最小的第一个,降序的反映)默认情况下,在调用函数时使用。
这似乎有什么问题?查看sort_index()
here的文档。
答案 1 :(得分:0)
结果是正确的。函数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]