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

Python大批量数值缩放及分布直方图绘制方法咨询

Python实现数值缩放与分布可视化方案

一、数据缩放实现

针对10万级以上的数值数据,推荐使用NumPy的向量化运算实现,效率远高于普通Python循环,完全符合你提到的缩放逻辑,0值会自动保留无需额外处理。

import numpy as np

# 示例原始数据,实际使用时替换为你的全量数据集即可
raw_data = np.array([84.49, 60.885, 33.6, 0, 6.4, 89.361, 0, 0, 5.6, 0, 39.828])
target_sum = 500

# 计算缩放系数
raw_sum = raw_data.sum()
scale_factor = target_sum / raw_sum

# 执行缩放
scaled_data = raw_data * scale_factor

# 验证结果,输出缩放后的总和,微小浮点精度误差属于正常现象
print(f"缩放后数据总和:{scaled_data.sum()}")

如果你的数据存储在csv等外部文件中,直接用np.loadtxt()或者pandas读取后转NumPy数组即可,10万条数据的缩放处理耗时在毫秒级。

二、缩放后数据分布直方图绘制

使用Matplotlib即可快速绘制分布直方图,针对0值占比较高的情况,也可以选择单独绘制非零值的分布来观察细节。

import matplotlib.pyplot as plt

# 解决中文显示问题,不需要可删除下面两行配置
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 绘制全量数据直方图
plt.figure(figsize=(10, 6))
# bins参数代表分组数量,可根据数据分布特征自行调整
plt.hist(scaled_data, bins=20, edgecolor='black', alpha=0.7)
plt.title('缩放后数值分布直方图')
plt.xlabel('缩放后数值')
plt.ylabel('频次')
plt.grid(axis='y', alpha=0.3)
plt.show()

# 可选:仅绘制非零值的分布,避免0值占比过高掩盖其他数据的分布特征
non_zero_scaled = scaled_data[scaled_data > 0]
plt.figure(figsize=(10, 6))
plt.hist(non_zero_scaled, bins=15, edgecolor='black', alpha=0.7, color='orange')
plt.title('缩放后非零数值分布直方图')
plt.xlabel('缩放后数值')
plt.ylabel('频次')
plt.grid(axis='y', alpha=0.3)
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 07:00:05