创建数组中每一行的距离矩阵?

问题描述

https://analyst.plus/match/demo的启发下,我试图通过Python找出足球(足球)比赛中的情况,在这些情况下,通过在每帧上建立距离矩阵,球员与队友的位置相似团队,然后使用算法查找相似之处。我将主队和客队分开,并将主队的(x,y)位置存储在数组locs_home_arr中。阵列中三个主球员(x,y)位置的示例,如下所示:

[[  955 -2079]
  [  955 -2079]
  [  955 -2079]
  ...
  [  947  2880]
  [  948  2878]
  [  947  2878]]

 [[ 1792 -1019]
  [ 1790 -1018]
  [ 1789 -1018]
  ...
  [ -349  2108]
  [ -346  2106]
  [ -344  2103]]

 [[  929  2400]
  [  928  2398]
  [  926  2394]
  ...
  [  234 -1294]
  [  239 -1298]
  [  242 -1301]]

第一帧的行locs_home_single_frame = locs_home_arr[:,0]是每个玩家(x,y)位置的2D数组(零是替代物-可能会进行优化):

[[  955 -2079]
 [ 1792 -1019]
 [  929  2400]
 [ 1845  1190]
 [ 4603     5]
 [ 2098    72]
 [  586  -642]
 [    8  -935]
 [  103  1105]
 [ 1143    -4]
 [  612   727]
 [    0     0]
 [    0     0]
 [    0     0]
 [    0     0]
 [    0     0]]

每个球员的(x,y)位置共有141173帧,在这里我试图通过使用SciPy的距离矩阵来找到与队友的欧几里得距离,将每一帧转换为距离矩阵。在第一帧上使用该函数的示例:

distmatrix = spatial.distance.cdist(locs_home_arr[:,0],locs_home_arr[:,'euclidean')

此处以前3名玩家为例:

[[   0.         1350.61800669 4479.07546264 3387.98775086 4201.3045593
  2435.82634849 1483.62057144 1485.1077402  3296.02184459 2083.49922006
  2826.88609604 2287.85183087 2287.85183087 2287.85183087 2287.85183087
  2287.85183087]
 [1350.61800669    0.         3526.23453559 2209.63571658 2991.70469799
  1133.10061336 1263.55253156 1785.97648361 2713.68697532 1204.75142664
  2107.34809654 2061.46185994 2061.46185994 2061.46185994 2061.46185994
  2061.46185994]
 [4479.07546264 3526.23453559    0.         1517.6152345  4385.6927617
  2605.02303253 3061.27636779 3459.83612329 1536.0016276  2413.50616324
  1702.76774693 2573.52695731 2573.52695731 2573.52695731 2573.52695731
  2573.52695731]

我的问题:我如何遍历球员(x,y)位置的每一帧,并以最佳方式为每一帧创建距离矩阵?我尝试了for循环的不同变体,但是没有任何运气。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)