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

如何不使用for循环查找矩阵每行最大值并将其余值替换为0

实现方法

方法1:基于NumPy向量化实现(无任何显式for循环)

该方案性能最优,尤其适合大矩阵场景,全程使用NumPy的广播和向量化操作,无需手写循环:

import numpy as np

# 输入矩阵A
A = [[2,2,4,2,2,2],
     [2,6,2,2,2,2],
     [2,2,2,2,8,2]]

# 转换为NumPy数组
arr = np.array(A)
# 计算每行最大值,保持维度适配广播规则
row_max = arr.max(axis=1, keepdims=True)
# 仅保留等于最大值的元素,其余位置置0
B = (arr == row_max) * arr

# 若需要转回Python原生列表格式,可调用tolist方法
B_list = B.tolist()

输出结果如下:

[[0 0 4 0 0 0]
 [0 6 0 0 0 0]
 [0 0 0 0 8 0]]

方法2:纯Python内置函数实现(无显式for关键字)

如果不想引入第三方依赖,可以用map结合匿名函数实现,语法层面不会出现for关键字:

A = [[2,2,4,2,2,2],
     [2,6,2,2,2,2],
     [2,2,2,2,8,2]]

B = list(map(lambda row: [num if num == max(row) else 0 for num in row], A))

注:该方案中的列表推导属于Python内部的隐式循环,执行效率高于普通显式for循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:24:05