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

如何用Python处理4列TXT数据集生成按X坐标汇总的一维直方图?

解决方案

你不需要用np.histogramdd,这个函数是用来做多维区间直方图的,和你要的「按原始x值分组求和」需求不匹配。直接用以下两种简单方法即可:

方法一:纯Numpy实现

import numpy as np

# 读取文本文件
data = np.loadtxt("your_data.txt")
x_coords = data[:, 0]
values = data[:, 3]

# 获取唯一的x值,以及每个x对应的索引
unique_x, idx = np.unique(x_coords, return_inverse=True)
# 按索引对values加权求和
total_per_x = np.bincount(idx, weights=values)

# 结果:unique_x是横轴的x值,total_per_x是对应总和
print("x值:", unique_x)
print("对应总和:", total_per_x)
# 示例输出:
# x值: [0. 1.]
# 对应总和: [60000. 90000.]

方法二:Pandas实现(更直观)

import pandas as pd

# 读取数据,分隔符为空格,无表头
df = pd.read_csv("your_data.txt", sep=" ", header=None)
# 按第0列(x坐标)分组,对第3列(数值)求和
sum_result = df.groupby(0)[3].sum()

# 提取结果
unique_x = sum_result.index.to_numpy()
total_per_x = sum_result.to_numpy()

print("x值:", unique_x)
print("对应总和:", total_per_x)

为什么np.histogramdd不适用?

你之前用np.histogramdd得到4维张量,应该是误将4列全部作为坐标输入了(正确用法是仅传入前3列x/y/z作为坐标,第4列作为weights参数)。即便用法正确,histogramdd默认会把每个维度分成10个区间(bins=10),它统计的是区间内的加权和,而不是按你原始的离散x值分组求和,所以不符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 06:00:47