擅长:python、mysql、java
<p>我发现了一个很好的方法,但它需要scipy 0.11.0(sparse.csgraph)</p>
<p>下面是一个完整的例子,实际排序是“sort hull…”注释后面的两个对齐。</p>
<pre><code>import numpy as np
import scipy as sp
# random point cloud and hull
X = np.random.randint(0,200,(30,2))
hull = sp.spatial.qhull.Delaunay(X).convex_hull
# sort hull indices using (sparse) adjacency matrix graph stuff
g = sp.sparse.csr_matrix((np.ones(hull.shape[0]),hull.T), shape=(hull.max()+1,)*2)
sorted_hull = sp.sparse.csgraph.depth_first_order(g,hull[0,0],directed=False)[0]
# display with matplotlib
from matplotlib import pyplot as plt
plt.plot(X[:,0],X[:,1],'.')
plt.plot(X[sorted_hull,0],X[sorted_hull,1])
</code></pre>