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

如何使用Numpy优雅生成符合指定稀疏模式的(2^D, D)形0-1二维ndarray

实现方案

核心思路

你要生成的矩阵本质是所有D位二进制数的逐位拆解结果,共2D种组合,刚好对应矩阵的2D行,每列对应二进制的一位。

实现代码

方案1:位运算+广播(兼容性好,逻辑直观)

import numpy as np

def generate_binary_matrix(D):
    nums = np.arange(2 ** D)[:, np.newaxis]
    bit_masks = 2 ** np.arange(D)[np.newaxis, :]
    return (nums & bit_masks) >> np.arange(D)

测试示例:

# D=2测试
print(generate_binary_matrix(2))
# 输出:
# [[0 0]
#  [1 0]
#  [0 1]
#  [1 1]]

方案2:内置函数实现(代码更简洁)

使用numpy内置的np.unpackbits直接拆分整数的二进制位:

def generate_binary_matrix(D):
    return np.unpackbits(
        np.arange(2 ** D, dtype=np.uint8)[:, None],
        axis=1,
        count=D,
        bitorder='little'
    )

注意:如果D超过8,把dtype改成np.uint16、np.uint32等对应位数的无符号整数类型即可。

说明

两种实现输出的所有01组合都是完整的,如果你不需要严格匹配示例的行序,也可以调整bitorder或者结果的行排序,只要所有组合存在就符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:45:04