【发布时间】:2019-04-09 17:24:56
【问题描述】:
我有一个(x,y) 对中的点列表,它表示代理列表的位置。例如,给定 3 个代理,有 3 对点,我存储如下:
points = np.array([[x1, y1],
[x2, y2],
[x3, y3]])
我想计算一个后续数组,即从一个代理到所有其他代理的相对位置,但不是它本身。因此,使用上面的数据,我想使用数组points 生成数组relative_positions。 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]]
例如,给定存储为 numpy 数组的四个代理位置:
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 个案例(因为它是代理到自身的相对位置),但是我不认为这是一种“纯粹”的方式,因为我可能会不小心删除恰好在同一点(或非常接近)的代理
【问题讨论】: