如何构造由唯一0、1序列组成的2*x长度numpy数组?
生成指定格式的0-1唯一序列numpy数组
观察示例可知,每行由x个[1,0]或[0,1]的基础块拼接而成,所有可能的块组合(共2^x种)构成数组的全部行。以下是实现方案:
import numpy as np from itertools import product def generate_unique_sequences(x): # 定义两个基础块 blocks = np.array([[1, 0], [0, 1]]) # 生成x个块的所有可能组合(笛卡尔积) block_combinations = product(blocks, repeat=x) # 拼接每个组合的块并堆叠为最终数组 return np.vstack([np.hstack(combo) for combo in block_combinations]) # 验证x=2的情况 print("x=2 输出:") print(generate_unique_sequences(2)) # 验证x=3的情况 print("\nx=3 输出:") print(generate_unique_sequences(3))
代码说明
- 基础块
blocks是构成所有行的最小单元,只有[1,0]和[0,1]两种选择 itertools.product用于生成x个块的所有笛卡尔积组合,确保每个序列唯一- 通过
np.hstack拼接单个组合内的块形成一行,再用np.vstack将所有行组合为二维numpy数组
运行后输出完全匹配你给出的预期结果。
内容的提问来源于stack exchange,提问作者HJA24
相关产品推荐
相关产品推荐

