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

如何用Python的Numpy生成每行和为10的随机0-1矩阵

如何用NumPy生成每行和为10的N×M随机0-1矩阵

首先要明确:必须满足M ≥ 10,因为每行需要有10个1,矩阵列数M得至少容纳这些1,否则无法生成符合要求的矩阵。

下面提供两种高效的实现方式:

方法1:随机选择位置设为1

通过np.random.choice为每行随机挑选10个不重复的列索引,将对应位置设为1,其余保持0:

import numpy as np

# 定义参数
N = 10  # 行数
M = 15  # 列数(必须≥10)
target_sum = 10

# 初始化全0矩阵
result_matrix = np.zeros((N, M), dtype=int)

# 逐行生成
for row_idx in range(N):
    # 随机选10个不重复的列索引
    selected_cols = np.random.choice(M, target_sum, replace=False)
    result_matrix[row_idx, selected_cols] = 1

# 验证每行和
print("每行元素和:", result_matrix.sum(axis=1))

方法2:打乱固定模板行

先构造包含10个1和(M-10)个0的模板行,再对每行随机打乱顺序:

import numpy as np

# 定义参数
N = 10
M = 15
target_sum = 10

# 构造单一行的基础模板
base_row = np.concatenate([np.ones(target_sum, dtype=int), np.zeros(M - target_sum, dtype=int)])

# 生成N行,每行打乱顺序
result_matrix = np.array([np.random.permutation(base_row) for _ in range(N)])

# 验证每行和
print("每行元素和:", result_matrix.sum(axis=1))

两种方法都能保证每行恰好有10个1,其余为0,且随机性均匀。如果M=10,那么矩阵每行都会是全1的数组,这也是符合要求的特殊情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:10:52