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

如何将矩阵中的1替换为x中对应索引的数值?

问题:用列表对应索引值替换矩阵中的1

需求

需用x中对应索引的数值替换矩阵z_prime中的1。

现有代码

x = [0.5697071, 0.47144773, 0.45310486]
z_prime= [[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1]]
flatten_matrix = [val for val in z_prime ]
for val in flatten_matrix:
    for j in val:
        if(j!=0):
            z= x
        else:
            z = 0
        print(z)

当前输出

0
0
0
0
0
[0.5697071, 0.47144773, 0.45310486]
0
[0.5697071, 0.47144773, 0.45310486]
0
0
[0.5697071, 0.47144773, 0.45310486]
[0.5697071, 0.47144773, 0.45310486]

期望输出

[[0, 0, 0], [0, 0, 0.45310486], [0, 0.47144773, 0], [0, 0.47144773, 0.45310486]]

修正后的代码与解释

问题分析

原代码的核心问题:

  1. 仅遍历元素但未构建目标矩阵结构,直接打印单个值
  2. 遇到1时直接赋值整个x列表,而非对应索引的元素
  3. 未利用元素索引关联x中的对应值

基础版修正代码

x = [0.5697071, 0.47144773, 0.45310486]
z_prime = [[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1]]

# 初始化结果矩阵
result = []
for row in z_prime:
    new_row = []
    # 用enumerate同时获取元素索引和值
    for idx, val in enumerate(row):
        if val == 1:
            # 替换为x中对应索引的数值
            new_row.append(x[idx])
        else:
            new_row.append(val)
    result.append(new_row)

print(result)

简化版(列表推导式)

如果追求简洁,可以用嵌套列表推导式实现:

x = [0.5697071, 0.47144773, 0.45310486]
z_prime = [[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1]]

result = [[x[idx] if val == 1 else val for idx, val in enumerate(row)] for row in z_prime]
print(result)

效果说明

两段代码都会输出符合期望的矩阵,核心逻辑是通过enumerate获取元素的索引,将矩阵中值为1的元素替换为x列表对应索引的数值,同时保留原矩阵的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:30:50