У меня есть список точек в парах (x,y)
, который представляет позиции списка агентов.Например, учитывая 3 агента, есть 3 пары точек, которые я храню следующим образом:
points = np.array([[x1, y1],
[x2, y2],
[x3, y3]])
Я хотел бы рассчитать последующий массив, то есть относительную позицию от одного агента к каждому другому агенту., но НЕ сам по себе.Итак, используя приведенные выше данные, я бы хотел сгенерировать массив relative_positions
, используя массив points
.points
может иметь N
позиций (я могу иметь до 50-100 агентов одновременно).
Таким образом, используя points
, описанный выше, я хотел бы получить вывод:
relative_positions = [[x2-x1, y2-y1],
[x3-x1, y3-y1],
[x1-x2, y1-y2],
[x3-x2, y3-y2],
[x1-x3, y1-y3],
[x2-x3, y2-y3]]
Например, учитывая четыре позиции агента, хранящиеся в виде массива с нулевыми значениями:
agent_points = np.array([[10, 1],
[30, 3],
[25, 10],
[5, 5]])
Я хотел бы сгенерировать вывод:
relative_positions = [[30-10, 3-1],
[25-10, 10-1],
[5-10, 5-1],
[10-30, 1-3],
[25-30, 10-3],
[5-30, 5-3],
[10-25, 1-10],
[30-25, 3-10],
[5-25, 5-10],
[10-5, 1-5],
[30-5, 3-5],
[25-5, 10-5]]
Как мне эффективно это делать?Я думал о том, чтобы просто вычислить каждую возможную разницу и удалить 0 случаев (для случая, когда это относительная позиция от агента к себе), однако я не думаю, что это «чистый» способ сделать это, так как я мог случайно удалитьагент, который случайно оказался в одной и той же точке (или очень близко)