本文介绍如何使用numpy与itertools高效生成所有长度为2x、且恰好包含x个1和x个0的二进制行向量组成的二维数组,适用于组合枚举、约束排列生成等场景。
您提供的示例中,当 x=2 时输出4行、每行4列(即 2*x=4),且每行恰好含两个1和两个0;同理,x=3 时每行6列、含三个1和三个0。但需注意:原始答案中使用的 np.column_stack([a, 1 - a]) 实际生成的是「前x位与后x位互补」的结构(如 [0,1,1,0]),这虽满足总长2x、总和为x,但并非穷举所有含x个1的组合——它仅覆盖了“前半段任意、后半段取反”的子集(共 2^x 种),而完整组合数应为 C(2x, x)(例如 x=3 时为 C(6,3)=20,但示例只列出8行)。
因此,正确解法应分为两类需求:
推荐使用 itertools.combinations 枚举 1 的位置索引,再用 NumPy 构造稀疏行:
import numpy as np
from itertools import combinations
def binary_arrays_with_x_ones(x):
n = 2 * x
# 生成所有从 [0, 1, ..., 2x-1] 中选 x 个位置置1的组合
ones_positions = list(combinations(range(n), x))
# 初始化全零数组
arr = np.zeros((len(ones_positions), n), dtype=int)
# 向每行对应位置填1
for i, pos in enumerate(ones_positions):
arr[i, list(pos)] = 1
return arr
# 示例:x = 2 → 输出 6 行(C(4,2)=6),非原题所示4行
print(binary_arrays_with_x_ones(2))
# [[1 1 0 0]
# [1 0 1 0]
# [1 0 0 1]
# [0 1 1 0]
# [0 1 0 1]
# [0 0 1 1]]⚠️ 注意:原问题示例输出仅含4行(x=2)或8行(x=3),实为 “前x位任意,后x位为前x位的按位取反” 的特殊结构(即 a + (1-a) 拼接),其本质是 2^x 种模式,而非 C(2x,x)。若此结构即您的真实需求,则原始答案正确:
from itertools import product
import numpy as np
def binary_arrays_complementary(x):
# 生成所有长度为x的0-1组合
a = np.array(list(product([0, 1], repeat=x)))
# 拼接:前x位为a,后x位为1-a(逐元素取反)
return np.hstack([a, 1 - a])
print(binary_arrays_complementary(2))
# [[0 0 1 1]
# [0 1 1 0]
# [1 0 0 1]
# [1 1 0 0]]该结果与您原始答案一致,但顺序和数值与题干示例不完全匹配(题干以 [1,0,1,0] 开头,而此处以 [0,0,1,1] 开头)。可通过排序或自定义排列调整,例如按字典序逆序或按特定模式筛选。
或盲目 product(*[[0,1]]*2x)(会生成 2^(2x) 行,远超需求,且需后过滤);最终选择取决于您的实际约束条件——请优先确认:是否必须严格满足“每行1的数量 = x”,还是仅需满足“前x位 + 后x位互为补集”这一更强对称性。
# 编码
# 排列
# numpy
# 您的
# 长度为
# 的是
# 穷举
# 这一
# 推荐使用
# 适用于
# 自定义
# 为其
# 所示
相关文章:
如何快速生成凡客建站的专业级图册?
北京的网站制作公司有哪些,哪个视频网站最好?
如何在Golang中使用encoding/gob序列化对象_存储和传输数据
如何在Windows环境下新建FTP站点并设置权限?
如何配置支付宝与微信支付功能?
建站VPS配置与SEO优化指南:关键词排名提升策略
山东网站制作公司有哪些,山东大源集团官网?
宝塔建站助手安装配置与建站模板使用全流程解析
,制作一个手机app网站要多少钱?
如何在阿里云购买域名并搭建网站?
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
如何在景安服务器上快速搭建个人网站?
专业公司网站制作公司,用什么语言做企业网站比较好?
上海网站制作开发公司,上海买房比较好的网站有哪些?
在线制作视频网站免费,都有哪些好的动漫网站?
山东云建站价格为何差异显著?
做企业网站制作流程,企业网站制作基本流程有哪些?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
如何快速搭建二级域名独立网站?
c# 服务器GC和工作站GC的区别和设置
如何快速搭建自助建站会员专属系统?
如何在宝塔面板创建新站点?
宁波自助建站系统如何快速打造专业企业网站?
如何在七牛云存储上搭建网站并设置自定义域名?
如何在云虚拟主机上快速搭建个人网站?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
如何在腾讯云免费申请建站?
建站之星Pro快速搭建教程:模板选择与功能配置指南
香港服务器部署网站为何提示未备案?
如何零基础在云服务器搭建WordPress站点?
网站制作话术技巧,网站推广做的好怎么话术?
海南网站制作公司有哪些,海口网是哪家的?
婚礼视频制作网站,学习*后期制作的网站有哪些?
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
如何确保西部建站助手FTP传输的安全性?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
建站之星北京办公室:智能建站系统与小程序生成方案解析
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
制作网站公司那家好,网络公司是做什么的?
制作宣传网站的软件,小红书可以宣传网站吗?
如何快速上传自定义模板至建站之星?
如何用搬瓦工VPS快速搭建个人网站?
如何快速生成橙子建站落地页链接?
c# 在ASP.NET Core中管理和取消后台任务
建站之星官网登录失败?如何快速解决?
如何用y主机助手快速搭建网站?
广州商城建站系统开发成本与周期如何控制?
*请认真填写需求信息,我们会在24小时内与您取得联系。