У меня есть список (x, y, z) точек, представляющих декартовы координаты многих точек.Мне нужно выбрать (x, y, z) точки, чьи только (x, y) точки различны.
Я придумал следующий код, который выбирает (x, y, z) только на основе уникального (x, y, z) или уникального (x, y).
def unique_points(x,y,z, xy_only = False):
a,b,c = [],[],[]
if xy_only is False:
for i,j,k in set(zip(x,y,z)):
a.append(i)
b.append(j)
c.append(k)
return a,b,c
elif xy_only is True:
# storing unique points as keys
points = dict()
for i,j,k in zip(x,y,z):
points[(i,j)] = (i,j,k)
for i,j,k in points.values():
a.append(i)
b.append(j)
c.append(k)
return a,b,c
Хотелось бы узнать, есть ли какой-нибудь встроенный метод для достижения результата.Можно ли еще уменьшить этот код?
Кроме того, существует ли какой-либо общий способ фильтрации n-мерных точек на основе уникальных (n-1) размерных точек?