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

如何从元组列表生成权重数组,绘制Y轴为权重的直方图

嘿,这事儿不难!你的元组列表里每个元素的第二个值就是我们需要的权重,生成权重数组和绘制Y轴为权重的直方图的步骤我给你理清楚了👇

第一步:生成权重数组

从你的元组列表A中提取权重数组非常直接,只需要遍历每个元组,取出第二个元素即可:

# 补全省略部分后的完整元组列表示例
A = [(122208102.23250552, 34), (164096757.6449624, 4), (212275562.3177331, 72), (499344188.7213493, 240), (515347294.02090293, 2), (614044718.1056056, 4), (623878472.271997, 37), (1050993427.1862154, 2), (1885818969.4904015, 106), (2718942354.402217, 539), (2784838407.8050084, 23), (3996685731.144668, 26), (4540461526.048465, 1), (7019400139.695788, 2), (8079788636.830896, 2), (8847080928.7053, 2), (11989470404.794186, 104), (18560941417.034264, 782)]

# 提取权重数组
weights = [t[1] for t in A]
# 对应的数值数组(后续绘图会用到)
values = [t[0] for t in A]

这样weights就是你要的权重数组了。

第二步:绘制Y轴为权重的直方图

根据你的需求,我提供两种常用的绘图方式,你可以根据数据规模和可视化需求选择:

方式1:直接基于原始数据绘制

方法A:展开数据后绘制普通直方图

把每个数值重复对应权重的次数,再绘制标准直方图,Y轴自然就是权重(出现次数):

import matplotlib.pyplot as plt

# 展开数据:每个数值重复对应权重的次数
expanded_data = []
for val, cnt in A:
    expanded_data.extend([val] * cnt)

# 绘制直方图,自动分箱
plt.hist(expanded_data, bins='auto', edgecolor='black')
plt.ylabel('权重(出现次数)')
plt.xlabel('数值')
plt.title('数值分布直方图(Y轴为权重)')
plt.show()

方法B:不展开数据,用权重参数绘制(适合大数据量)

如果数据量很大,展开数据会占用过多内存,直接用matplotlib的weights参数更高效:

import matplotlib.pyplot as plt

# 提取数值和权重(如果前面已经生成过可以跳过这一步)
values = [t[0] for t in A]
weights = [t[1] for t in A]

# 绘制直方图,指定weights参数
plt.hist(values, bins='auto', weights=weights, edgecolor='black')
plt.ylabel('权重(出现次数)')
plt.xlabel('数值')
plt.title('数值分布直方图(Y轴为权重)')
plt.show()

方式2:自定义分箱,展示区间总权重

如果你想把数值分成若干区间,Y轴显示每个区间的总权重,可以这样做:

import matplotlib.pyplot as plt
import numpy as np

values = [t[0] for t in A]
weights = [t[1] for t in A]

# 自定义分箱数量,比如分成10个区间
bins = np.linspace(min(values), max(values), 10)

# 计算每个区间的总权重
bin_total_weights, _ = np.histogram(values, bins=bins, weights=weights)

# 绘制直方图(用条形图更直观展示区间权重)
plt.bar(bins[:-1], bin_total_weights, width=np.diff(bins), edgecolor='black')
plt.ylabel('区间总权重')
plt.xlabel('数值区间')
plt.title('数值区间权重直方图')
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:53:57