综合实用脚本,高速跑动距离对比?

wen 实用脚本 4

本文目录导读:

综合实用脚本,高速跑动距离对比?

  1. 需求拆解
  2. 核心脚本
  3. 进阶对比(分组 / 半场 / 多场次)
  4. 常见高速阈值参考
  5. 如果你说的是游戏脚本

“综合实用脚本”和“高速跑动距离对比”这两个说法放在一起,通常有两种理解:

  1. 体育/足球数据分析:统计球员高速跑动距离,做对比脚本
  2. 游戏/自动化脚本:角色高速移动距离的计算与对比

下面按足球运动数据分析这个最常见场景,给你一个可直接用的 Python 脚本框架。


需求拆解

要素 说明
输入 球员追踪数据(时间戳、x/y坐标、速度)
高速阈值 如 ≥ 20 km/h 或 ≥ 5.5 m/s
输出 每名球员高速跑动距离、占比、对比图表
对比维度 球员之间 / 上下半场 / 比赛之间

核心脚本

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# ========== 1. 参数配置 ==========
HIGH_SPEED_THRESHOLD = 5.5   # m/s,约19.8km/h
SAMPLE_INTERVAL = 0.1        # 采样间隔(秒),按实际数据调整
# ========== 2. 读取数据 ==========
# 期望列: player_id, timestamp, x, y, speed
df = pd.read_csv("tracking_data.csv")
df = df.sort_values(["player_id", "timestamp"]).reset_index(drop=True)
# ========== 3. 计算每帧位移 ==========
df["dx"] = df.groupby("player_id")["x"].diff()
df["dy"] = df.groupby("player_id")["y"].diff()
df["dist"] = np.sqrt(df["dx"]**2 + df["dy"]**2)
# ========== 4. 筛选高速段 ==========
df["is_high"] = df["speed"] >= HIGH_SPEED_THRESHOLD
df["high_dist"] = np.where(df["is_high"], df["dist"], 0)
# ========== 5. 汇总统计 ==========
summary = df.groupby("player_id").agg(
    total_dist=("dist", "sum"),
    high_dist=("high_dist", "sum"),
    high_frames=("is_high", "sum"),
    avg_speed=("speed", "mean"),
    max_speed=("speed", "max"),
).reset_index()
summary["high_ratio"] = summary["high_dist"] / summary["total_dist"]
summary["high_time_s"] = summary["high_frames"] * SAMPLE_INTERVAL
print(summary.sort_values("high_dist", ascending=False))
# ========== 6. 可视化对比 ==========
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
summary_sorted = summary.sort_values("high_dist", ascending=True)
axes[0].barh(summary_sorted["player_id"], summary_sorted["high_dist"], color="tomato")
axes[0].set_title("高速跑动距离对比 (m)")
axes[0].set_xlabel("距离 (m)")
axes[1].barh(summary_sorted["player_id"], summary_sorted["high_ratio"]*100, color="steelblue")
axes[1].set_title("高速跑动占比 (%)")
axes[1].set_xlabel("占比 (%)")
plt.tight_layout()
plt.savefig("high_speed_compare.png", dpi=150)
plt.show()

进阶对比(分组 / 半场 / 多场次)

# 假设数据中有 half 字段 (1/2) 和 match_id
pivot = df.groupby(["player_id", "half"])["high_dist"].sum().unstack()
pivot.columns = [f"半场{c}高速距离" for c in pivot.columns]
pivot["上下半场差"] = pivot.iloc[:,0] - pivot.iloc[:,1]
print(pivot)

常见高速阈值参考

标准 阈值 适用
足球(FIFA) ≥ 19.8 km/h (5.5 m/s) 通用高速跑
冲刺 ≥ 25.2 km/h (7.0 m/s) Sprint
篮球 ≥ 5.0 m/s 高强度跑
橄榄球 ≥ 5.0 m/s High-speed running

如果你说的是游戏脚本

那“高速跑动距离对比”一般指:

  • 不同移速下单位时间位移对比
  • 加速/减速曲线模拟
  • 两段路径耗时对比

可以改成这样的极简版:

def run_distance(speed, time, accel=0):
    """匀加速或匀速位移"""
    if accel == 0:
        return speed * time
    t_acc = speed / accel
    if t_acc >= time:
        return 0.5 * accel * time**2
    return 0.5 * accel * t_acc**2 + speed * (time - t_acc)
for v in [3, 5, 8, 10]:
    print(f"速度{v} m/s, 10秒位移: {run_distance(v, 10):.1f} m")

你具体是哪种场景?

  • 足球/体育数据 → 告诉我数据格式,我可以把脚本改成直接能跑的
  • 游戏/自动化 → 说下引擎或需求,我给对应版本
  • 只要对比图表模板 → 我也可以给 Excel/Origin 方案

抱歉,评论功能暂时关闭!