c++ 二维数组 排序_Numpy进阶之排序小技巧
时间: 2023-08-04 21:05:57 浏览: 164
zhongxing.rar_二维数组计算_几何中心_颜色三维
好的,你的问题是关于C++二维数组排序和Numpy排序技巧。我来回答一下:
对于C++二维数组排序,可以使用STL库中的sort()函数,结合自定义的比较函数实现按照指定规则排序。例如,对于一个int类型的二维数组arr,可以按照第一列从小到大,第二列从大到小的规则进行排序,代码如下:
```
bool cmp(const vector<int>& a, const vector<int>& b) {
if (a[0] != b[0]) return a[0] < b[0];
return a[1] > b[1];
}
sort(arr.begin(), arr.end(), cmp);
```
对于Numpy排序小技巧,可以使用argsort()函数获取排序后的下标,并利用该下标进行元素的排序。例如,对于一个numpy数组arr,可以按照第一列从小到大,第二列从大到小的规则进行排序,代码如下:
```
import numpy as np
arr = np.array([[3, 2, 1], [2, 4, 3], [1, 3, 2]])
idx = np.lexsort((-arr[:, 1], arr[:, 0]))
arr_sorted = arr[idx]
```
其中,np.lexsort()函数返回按照多个键排序后的下标,-arr[:, 1]表示按照第二列从大到小排序,arr[:, 0]表示按照第一列从小到大排序。
阅读全文