擅长:python、mysql、java
<p>您可以通过获取符号的秩顺序,然后为输出数组的每一半选取备用秩来完成此操作:</p>
<pre><code>x = np.array(['A', 'A', 'B', 'B', 'A', 'A', 'A',
'A', 'A', 'B', 'C', 'C', 'B', 'B'])
order = np.argsort(x)
idx = np.r_[order[0::2], order[1::2]]
print(x[idx])
# ['A' 'A' 'A' 'A' 'B' 'B' 'C' 'A' 'A' 'A' 'B' 'B' 'B' 'C']
print(idx)
# [ 0 4 6 8 3 12 10 1 5 7 2 9 13 11]
</code></pre>
<p>默认情况下,<a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.argsort.html" rel="nofollow">^{<cd1>}</a>使用快速排序算法,平均时间复杂度<em>O(nlogn)</em>。索引步骤是<em>O(1)</em>。你知道吗</p>