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

3×3矩阵分区域数值累加实现求助:基于Numpy的代码调试

问题解决代码及说明

首先修正核心错误:原代码用axis=0是求列的最大值,要获取每行最大值需改为axis=1。之后通过Numpy索引掩码或循环定位三个区域,完成数值累加操作。

高效实现代码(Numpy掩码方式)

import numpy as np
mat = np.array([[10,5,9],
                [2,20,6],
                [8,3,30]]).reshape(3,3)

# 获取每行的最大值
max_list = np.max(mat, axis=1)
N1, N2, N3 = max_list

# 创建行列索引矩阵,用于定位区域
rows, cols = np.indices(mat.shape)

# 1. 上半区(行索引 < 列索引)加N1
mat[rows < cols] += N1
# 2. 主对角线(行索引 == 列索引)加N2
mat[rows == cols] += N2
# 3. 下半区(行索引 > 列索引)加N3
mat[rows > cols] += N3

print(mat)

运行输出

[[30 15 19]
 [32 40 26]
 [38 33 60]]

关键修正点

  • 替换axis=0为axis=1,正确获取每行最大值
  • 用Numpy索引掩码替代循环,矩阵操作更高效简洁
  • 明确三个区域的定义:
    • 上半区:主对角线以上(不含对角线)的元素
    • 主对角线:行、列索引相等的元素
    • 下半区:主对角线以下(不含对角线)的元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:39:56