You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现:像素坐标的ADC值求和与重复次数统计

解决方案:处理像素CSV数据

方法一:用Pandas(推荐,高效简洁)

Pandas是处理表格数据的首选工具,能快速完成分组、聚合和补全操作。

import pandas as pd

# 1. 读取CSV文件,替换为你的文件路径
df = pd.read_csv("your_data.csv")

# 2. 过滤ADC列:根据需求保留TDC值
# 若ADC列是标识列(比如取值为"TDC"/"ADC"),用这行:
# df_filtered = df[df["ADC"] == "TDC"]
# 若ADC列是数值列且仅需保留含0的行(或所有行),直接用原数据:
df_filtered = df

# 3. 按像素坐标分组,计算能量总和与行数
grouped = df_filtered.groupby(["X", "Y"]).agg(
    total_energy=("Energy", "sum"),
    row_count=("X", "count")  # 任意列计数均可
).reset_index()

# 4. 补全0-127的所有像素坐标(确保无缺失)
all_pixels = pd.MultiIndex.from_product(
    [range(128), range(128)],
    names=["X", "Y"]
).to_frame(index=False)

# 合并数据,缺失像素的能量和计数补0
final_result = pd.merge(all_pixels, grouped, on=["X", "Y"], how="left").fillna(0)
final_result["row_count"] = final_result["row_count"].astype(int)

# 5. 保存处理后的结果
final_result.to_csv("processed_result.csv", index=False)

方法二:纯Python实现(无需依赖第三方库)

如果无法安装Pandas,用原生Python字典也能完成需求:

from collections import defaultdict

# 初始化字典存储每个像素的累计能量和行数
pixel_stats = defaultdict(lambda: [0.0, 0])

# 读取并处理CSV
with open("your_data.csv", "r") as input_file:
    # 解析表头,获取各列索引
    header = input_file.readline().strip().split(",")
    x_col = header.index("X")
    y_col = header.index("Y")
    adc_col = header.index("ADC")
    energy_col = header.index("Energy")

    for line in input_file:
        parts = line.strip().split(",")
        # 过滤ADC列:按需调整判断条件,示例保留所有行(含0值)
        # if parts[adc_col] == "TDC":  # 若需按标识过滤,启用此行
        x = int(parts[x_col])
        y = int(parts[y_col])
        energy = float(parts[energy_col])
        pixel_stats[(x, y)][0] += energy
        pixel_stats[(x, y)][1] += 1

# 生成包含所有0-127像素的结果
with open("processed_result.csv", "w") as output_file:
    output_file.write("X,Y,total_energy,row_count\n")
    for x in range(128):
        for y in range(128):
            total_energy, row_count = pixel_stats.get((x, y), [0.0, 0])
            output_file.write(f"{x},{y},{total_energy},{row_count}\n")

关键说明

  • 过滤逻辑:如果ADC列是区分数据类型的标识列(比如有"TDC"和"ADC"两种取值),在代码中启用对应判断条件即可;如果ADC列是数值且仅需保留含0的行,可调整过滤条件为df[df["ADC"] == 0]。
  • 补全像素:代码会自动补充0-127范围内未出现的像素,确保结果覆盖所有预期坐标,缺失数据的能量和计数设为0。
  • 结果输出:处理后的CSV包含X、Y、total_energy(能量总和)、row_count(参与求和的行数)四列。

内容的提问来源于stack exchange,提问作者Patrycja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 10:20:41