hul*_*ain 3 python arrays sorting opencv numpy
我有一个numpy数组,其中包含使用findNonZero()OpenCV方法获得的坐标.我想对它们进行排序以绘制轮廓.
示例未排序的numpy数组(不是坐标):
[[ 0, 2],
[ 0, 0],
[-1, 8],
[-6, 7],
[-1, 1]]
Run Code Online (Sandbox Code Playgroud)
预期排序的numpy数组:
[[-6, 7],
[-1, 1],
[-1, 8],
[ 0, 0],
[ 0, 2]]
Run Code Online (Sandbox Code Playgroud)
我希望数组根据第一列进行排序,如果第一列中的值相等,我希望它根据第二列进行排序.有没有办法以最少的时间复杂度这样做,因为处理要在云上完成?
你可以用np.lexsort-
a[np.lexsort(a[:,::-1].T)]
Run Code Online (Sandbox Code Playgroud)
样品运行 -
In [42]: a
Out[42]:
array([[ 0, 2],
[ 0, 0],
[-1, 8],
[-6, 7],
[-1, 1]])
In [43]: a[np.lexsort(a[:,::-1].T)]
Out[43]:
array([[-6, 7],
[-1, 1],
[-1, 8],
[ 0, 0],
[ 0, 2]])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |