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

如何按矩阵分组标识对对应位置数值求和?附示例

嘿,我来帮你搞定这个需求!本质上咱们就是要根据第一行的标识,对第二行对应位置的数值做分组求和,下面给你两种常用工具的实现方法,按需选用就行:

解决方案

方法1:Matlab实现

你的矩阵格式看起来很贴合Matlab的写法,先给你对应代码:

A = [1 2 2 2 3 3 ; 0.1 0.2 0.3 0.05 0.2 0.8];
% 拆分标识行和数值行
labels = A(1,:);
values = A(2,:);

% 获取唯一标识并分组求和
unique_labels = unique(labels);
result = zeros(size(unique_labels));

for i = 1:length(unique_labels)
    % 找出当前标识对应的所有位置
    idx = labels == unique_labels(i);
    % 对对应位置的数值求和
    result(i) = sum(values(idx));
end

% 按要求格式输出结果
for i = 1:length(unique_labels)
    fprintf('标识%d对应的y(%d)=%.2f\n', unique_labels(i), unique_labels(i), result(i));
end

运行后会得到你想要的结果:

标识1对应的y(1)=0.10;标识2对应的y(2)=0.55;标识3对应的y(3)=1.00

方法2:Python实现

如果用Python处理,推荐用numpy或者pandas,两种方式都很方便:

用numpy实现

import numpy as np

A = np.array([[1, 2, 2, 2, 3, 3], [0.1, 0.2, 0.3, 0.05, 0.2, 0.8]])
labels = A[0, :]
values = A[1, :]

# 获取唯一标识及对应索引,再加权求和
unique_labels, indices = np.unique(labels, return_inverse=True)
result = np.bincount(indices, weights=values)

# 输出结果
for label, res in zip(unique_labels, result):
    print(f'标识{label}对应的y({label})={res}')

用pandas实现(更直观)

import pandas as pd

# 把数据转换成DataFrame,方便分组操作
df = pd.DataFrame({
    'label': [1, 2, 2, 2, 3, 3],
    'value': [0.1, 0.2, 0.3, 0.05, 0.2, 0.8]
})

# 按label分组求和
result = df.groupby('label')['value'].sum()

# 按要求格式输出
for label in result.index:
    print(f'标识{label}对应的y({label})={result[label]}')

核心逻辑其实很简单:先拆分出分组标识和对应数值,再按标识分组,最后对每组的数值求和,就能得到每个标识对应的y值啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:09:19