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

如何将NumPy矩阵指定索引外的所有元素替换为0?

实现保留指定索引元素的数组处理

首先要明确:你提到的(1,4)、(4,3)、(3,1)是1起始的索引,而Python中列表的索引从0开始,对应转换为(0,3)、(3,2)、(2,0)。

方法一:分步实现(直观易懂)

先定义原数组和需要保留的索引(转换为0起始):

graph2 = [[0, 10, 15, 20],
          [10, 0, 35, 25],
          [15, 35, 0, 30],
          [20, 25, 30, 0]]
# 转换为Python的0起始索引
keep_indices = [(0, 3), (3, 2), (2, 0)]

接着创建和原数组维度相同的全0数组,再把需要保留的元素从原数组复制过去:

# 初始化全0结果数组
result = [[0]*len(row) for row in graph2]
# 填充需要保留的元素
for i, j in keep_indices:
    result[i][j] = graph2[i][j]

# 查看结果
print(result)

运行后输出:

[[0, 0, 0, 20],
 [0, 0, 0, 0],
 [15, 0, 0, 0],
 [0, 0, 30, 0]]

方法二:列表推导式(简洁写法)

如果追求代码简洁,可用嵌套列表推导式一行完成,同时用集合提升查找效率(数组规模大时更明显):

keep_indices = {(0, 3), (3, 2), (2, 0)}
result = [[graph2[i][j] if (i,j) in keep_indices else 0 for j in range(len(graph2[i]))] for i in range(len(graph2))]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:48:04