擅长:python、mysql、java
<p>上面描述的方法在所有的simplice中循环,如果有大量的点,可能需要很长的时间。更好的方法可能是使用Delaunay.vertex_neighbor_vertices,它已经包含了所有关于邻居的信息。不幸的是,提取信息</p>
<pre><code>def find_neighbors(pindex, triang):
return triang.vertex_neighbor_vertices[1][triang.vertex_neighbor_vertices[0][pindex]:triang.vertex_neighbor_vertices[0][pindex+1]]
</code></pre>
<p>下面的代码演示如何获取某些顶点(在本例中为17)的索引:</p>
<pre><code>import scipy.spatial
import numpy
import pylab
x_list = numpy.random.random(200)
y_list = numpy.random.random(200)
tri = scipy.spatial.Delaunay(numpy.array([[x,y] for x,y in zip(x_list, y_list)]))
pindex = 17
neighbor_indices = find_neighbors(pindex,tri)
pylab.plot(x_list, y_list, 'b.')
pylab.plot(x_list[pindex], y_list[pindex], 'dg')
pylab.plot([x_list[i] for i in neighbor_indices],
[y_list[i] for i in neighbor_indices], 'ro')
pylab.show()
</code></pre>