Если точки представляют поверхность, вы можете использовать триангуляцию Делоне в соответствии с предложением @ wim.
import numpy as np
import scipy.spatial
import pylab
data = np.random.random((12,3)) # arbitrary 3D data set
tri = scipy.spatial.Delaunay( data[:,:2] ) # take the first two dimensions
pylab.triplot( data[:,0], data[:,1], tri.simplices.copy() )
pylab.plot( data[:,0], data[:,1], 'ro' ) ;
Оттуда можно получить доступ к треугольникам или упрощениямчерез атрибут simplices
объекта tri
.Например, tri.simplices[0]
относится к первому треугольнику или симплексу и возвращает массив из трех целых чисел, скажем, [ 10, 0, 5 ]
.Это означает, что точки, составляющие первый симплекс, находятся по индексам 10, 0 и 5 в массиве data
.