首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++ armadillo库中的sort_index()函数给出错误的结果

c++ armadillo库中的sort_index()函数给出错误的结果
EN

Stack Overflow用户
提问于 2020-01-28 07:13:37
回答 1查看 180关注 0票数 0

我在c++ armadillo中使用了sort_index()函数,但它似乎没有给出正确的结果:

输入向量是3,4,2,1,5两个方向的排序

代码语言:javascript
复制
arma::sort_index(input, "ascend").print();
arma::sort_index(input, "descend").print();

并得到如下结果: 3,2,0,1,4和4,1,0,2,3

这两种说法都不正确。按照升序排序应该给出2,3,1,0,4

-编辑

谢谢你的回复!我现在意识到我误解了sort_index的索引方式。我仍然在努力寻找一个有效的、等价的函数来在c++中实现np.searchsorted……

EN

回答 1

Stack Overflow用户

发布于 2020-01-28 09:13:28

Armadillo的文档指出

sort_index( X )

sort_index( X, sort_direction )

返回一个向量,它描述了X的元素的排序顺序(即。它包含X的元素的索引)

返回的向量对应于原始向量X中的元素的索引,这将导致一个排序的向量。

numpy中对应的函数是argsort,而不是searchsorted。事实上,来自numpy的argsort将会给出与sort_index在armadillo中相同的解决方案。

在您的示例[3,4,2,1,5]中,最小的元素在索引3中,后跟索引2中的元素,然后是0,以此类推。换句话说,如果您在X中使用索引[3,2,0,1,4]对元素进行操作,您将得到向量[1, 2, 3, 4, 5],它是按X排序的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59940216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档