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

如何根据列表k将零矩阵填充为1,使每行元素和匹配k对应值

生成每行和为指定值的0-1矩阵的正确实现

原代码的问题

  • 每次循环直接覆盖A为一维数组,完全没操作最初创建的n×n零矩阵
  • 没有对应到每行的赋值逻辑,生成的数组和目标矩阵毫无关联

正确实现代码

import numpy as np

k = [3, 2, 0, 1]
n = len(k)
# 创建n×n的全零整数矩阵
A = np.zeros((n, n), dtype=int)

for row_idx in range(n):
    required_ones = k[row_idx]
    if required_ones > 0:
        # 随机挑选不重复的列索引,数量为required_ones
        selected_cols = np.random.choice(n, required_ones, replace=False)
        # 将该行的指定列设为1
        A[row_idx, selected_cols] = 1

print(A)

代码说明

  • 用len(k)获取矩阵维度n,保证矩阵行数和k的元素数量一致
  • 逐行处理:对每一行,根据k中对应的值确定需要填充的1的数量
  • 当需要填充1时,通过np.random.choice随机选择不重复的列位置,避免同一列重复设为1(如果允许重复可将replace设为True)
  • 若k中对应值为0,该行保持全0即可

示例输出(随机结果,每行和符合k的值)

[[1 0 1 1]
 [1 1 0 0]
 [0 0 0 0]
 [0 0 1 0]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:01:12