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

如何依据配对规则使用数组m修改数组a生成数组c?

如何用数组m修改数组a生成数组c?

背景说明

数组a是5行6列的二维数组,每行元素为0-5,且满足行内若p列值为q,则q列值为p;所有行内的列索引配对共有15个,均为p<q的不重复组合(即(0,1),(0,2),...,(4,5))。

数组m共4行15列:

  • 前两行对应上述15个配对的列索引(第一行是配对的第一个列索引,第二行是第二个列索引)
  • 后两行是对应配对需添加的数值(第三行对应第一个列的添加值,第四行对应第二个列的添加值)

核心修改逻辑

对每个配对(即m的每一列),给数组a中所有行的对应两列元素,分别加上m中对应位置的数值,最终得到数组c。

具体操作步骤

  1. 复制数组a得到初始数组c,避免修改原数组:c = a.copy()
  2. 遍历m的每一列(共15列):
    • 提取当前配对的两个列索引:col1 = m[0, i]、col2 = m[1, i](i为当前列的索引,从0到14)
    • 提取对应要添加的两个数值:val1 = m[2, i]、val2 = m[3, i]
    • 给c中所有行的col1列元素加上val1:c[:, col1] += val1
    • 给c中所有行的col2列元素加上val2:c[:, col2] += val2

代码实现

import numpy as np

# 原数组a
a = np.array([[1, 0, 3, 2, 5, 4],
              [2, 4, 0, 5, 1, 3],
              [3, 5, 4, 0, 2, 1],
              [4, 3, 5, 1, 0, 2],
              [5, 2, 1, 4, 3, 0]]) 

# 数组m
m = np.array([[0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4],
              [1, 2, 3, 4, 5, 2, 3, 4, 5, 3, 4, 5, 4, 5, 5], 
              [6, 4,-2, 5, 0,-1, 1, 4,-7,-8,-7, 3,-4, 1, 0],
              [3,-8, 1, 2, 1, 3, 1, 6, 5, 5, 0, 2, 3, 1, 0]])  

# 初始化c为a的副本
c = a.copy()

# 遍历m的每一列完成数值添加
for i in range(m.shape[1]):
    col1, col2 = m[0, i], m[1, i]
    val1, val2 = m[2, i], m[3, i]
    c[:, col1] += val1
    c[:, col2] += val2

# 输出结果
print("生成的数组c:")
print(c)

运行上述代码后,输出的c与题目给出的结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:30:14