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

如何将整数转换为指定长度的二进制numpy数组?

整数转固定长度二进制numpy数组的实现方法

下面提供两种实用的实现方式,满足将单个整数转换为指定长度的0/1 numpy数组需求(自动补前导零):

方法一:字符串格式化转换

通过Python内置字符串格式化生成固定长度二进制字符串,再逐字符转换为整数构建numpy数组,逻辑直观易懂:

import numpy as np

def int_to_bin_array(n, bits):
    # 截断超出指定长度的高位,仅保留最低bits位
    truncated_n = n & ((1 << bits) - 1)
    # 生成补零后的固定长度二进制字符串
    bin_str = format(truncated_n, f'0{bits}b')
    # 转换为numpy整数数组
    return np.array([int(char) for char in bin_str], dtype=np.int8)

测试示例:

>>> int_to_bin_array(19, bits=7)
array([0, 0, 1, 0, 0, 1, 1], dtype=int8)

方法二:numpy位运算实现

利用numpy向量运算直接操作二进制位,效率更高,适合批量处理场景:

import numpy as np

def int_to_bin_array(n, bits):
    # 生成从高位到低位的位掩码数组
    masks = 2 ** np.arange(bits - 1, -1, -1)
    # 通过按位与和整除运算提取每一位的0/1值,自动截断高位
    return (n & masks) // masks

测试示例:

>>> int_to_bin_array(19, bits=7)
array([0, 0, 1, 0, 0, 1, 1])

注意事项

  • 若输入整数的二进制位数超过指定bits,两种方法都会自动保留最低的bits位(截断高位);若需提前校验避免截断,可在函数开头添加判断:if n >= 2 ** bits: raise ValueError(f"整数{n}的二进制位数超过指定长度{bits}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:24:20