np.random.seed(1)
points = np.random.uniform(0, side, size=(N, 3))
cells = np.zeros((side, side, side), dtype=np.uint)
id = 1
for p in points.astype(int):
    cells[tuple(p)] = id
id += 1
cells = cells.flatten()
nz = np.nonzero(cells)[0]
print('%d cells have points' % len(nz))
print('first few ids:', cells[nz][:10])
Удаление дубликатов (в пределах заданного допуска) из массива векторов Numpy