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

如何生成位置随机、数量相等的0和1填充NumPy数组

固定数量0/1随机数组实现方案

需求为生成长度为20、恰好包含10个0和10个1、元素位置完全随机的numpy数组。

原有实现逐元素独立调用np.random.choice([0,1])做有放回抽样,最终数组内0和1的数量服从二项分布,会随机波动,无法保证恰好各10个。

推荐实现

核心逻辑非常直接:先凑齐固定数量的0和1,再全局随机打乱元素位置,就能同时满足数量固定、位置随机两个要求,numpy原生实现无需写循环,运行效率很高。

import numpy as np

# 构造包含10个0、10个1的基础数组
K = np.concatenate([np.zeros(10, dtype=int), np.ones(10, dtype=int)])
# 原地打乱数组元素顺序
np.random.shuffle(K)

print(K)

运行输出示例(每次运行结果随机):

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

输出数组内0和1的数量永远恰好各10个,且所有元素位置完全随机。

等效替代写法

如果不想使用原地打乱的shuffle接口,也可以选择其他等效实现:

  • 用np.random.permutation直接返回打乱后的新数组:
import numpy as np
K = np.random.permutation([0]*10 + [1]*10)
  • 用无放回抽样模式调用np.random.choice,本质和全量打乱逻辑一致:
import numpy as np
K = np.random.choice([0]*10 + [1]*10, size=20, replace=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 00:39:36