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

Matplotlib散点图中相同坐标下如何汇总c参数对应数据值?

问题解答

Matplotlib内置方法说明

Matplotlib没有直接实现「合并重复坐标对应c值总和」的内置功能,必须先对数据进行预处理,再传入散点图函数。

高效数据预处理方案(适配60万级大数组)

针对大数组场景,推荐使用NumPy的向量化操作实现,底层基于C语言优化,性能远高于Python循环或zip+集合的方法。核心思路是:

  • 将x、y坐标对合并为二维数组,识别唯一坐标
  • 对每个唯一坐标对应的data值求和

代码实现

import numpy as np

# 原始数据
x = np.array([3, 7, 12, 3, 56, 4, 2, 3, 65, 87, 12, 3, 9, 7, 87])
y = np.array([7, 24, 87, 9, 65, 43, 54, 9, 3, 8, 34, 9, 23, 6, 8])
data = np.array([6, 45, 4, 25, 7, 45, 78, 4, 82, 3, 9, 43, 32, 5, 9])

# 合并x、y为坐标对(二维数组,每行对应一组(x,y))
coords = np.column_stack((x, y))

# 获取唯一坐标,以及每个原始坐标对应的唯一坐标索引
unique_coords, inverse_indices = np.unique(coords, axis=0, return_inverse=True)

# 对每个唯一坐标对应的data值求和
summed_data = np.bincount(inverse_indices, weights=data)

# 拆分唯一坐标为新的x、y数组
new_x = unique_coords[:, 0]
new_y = unique_coords[:, 1]

# 输出结果
print("处理后x:", new_x)
print("处理后y:", new_y)
print("处理后data:", summed_data)

结果验证

运行后得到的核心数据与示例完全匹配(唯一坐标的顺序可能因NumPy版本略有差异,但数据准确性不受影响):

  • 坐标(3,9)对应的data总和为25+4+43=72
  • 坐标(87,8)对应的data总和为3+9=12

性能优势

该方案全程使用NumPy内置函数,避免了Python层面的循环操作,处理60万级数组仅需毫秒级时间,远快于纯Python实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:39:50