相关疑难解决方法(0)

C++排序和跟踪索引

使用C++,希望是标准库,我想按升序对一系列样本进行排序,但我还想记住新样本的原始索引.

例如,我有一个集合,矢量或样本矩阵A : [5, 2, 1, 4, 3].我想对这些进行排序 B : [1,2,3,4,5],但我也想记住值的原始索引,所以我可以得到另一个集合: C : [2, 1, 4, 3, 0 ]- 它对应于'B'中每个元素的索引,在原始'一个'.

例如,在Matlab中你可以这样做:

 [a,b]=sort([5, 8, 7])
 a = 5 7 8
 b = 1 3 2
Run Code Online (Sandbox Code Playgroud)

任何人都可以看到这样做的好方法吗?

c++ sorting indexing stl

203
推荐指数
7
解决办法
11万
查看次数

使用索引向量重新排序向量

我想重新排序向量中的项目,使用另一个向量来指定顺序:

char   A[]     = { 'a', 'b', 'c' };
size_t ORDER[] = { 1, 0, 2 };

vector<char>   vA(A, A + sizeof(A) / sizeof(*A));
vector<size_t> vOrder(ORDER, ORDER + sizeof(ORDER) / sizeof(*ORDER));

reorder_naive(vA, vOrder);
// A is now { 'b', 'a', 'c' }
Run Code Online (Sandbox Code Playgroud)

以下是一个低效的实现,需要复制向量:

void reorder_naive(vector<char>& vA, const vector<size_t>& vOrder)  
{   
    assert(vA.size() == vOrder.size());  
    vector vCopy = vA; // Can we avoid this?  
    for(int i = 0; i < vOrder.size(); ++i)  
        vA[i] = vCopy[ vOrder[i] ];  
}  
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方法,例如,使用swap()?

c++ stl vector

34
推荐指数
3
解决办法
2万
查看次数

使用numpy的加权百分位数

有没有办法使用numpy.percentile函数来计算加权百分位数?或者是否有人知道替代python函数来计算加权百分位数?

谢谢!

python numpy percentile weighted

22
推荐指数
7
解决办法
1万
查看次数

标签 统计

c++ ×2

stl ×2

indexing ×1

numpy ×1

percentile ×1

python ×1

sorting ×1

vector ×1

weighted ×1