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

如何将仅含0和1的numpy一维数组打包为32位无符号整数数组

01数组打包为无符号32位整数的实现方法

你可以通过以下numpy操作完成需求,位顺序和你给出的示例一致(数组首元素对应32位整数的最高位):

  • 先对原01数组补0,让总长度为32的整数倍,避免分组时报错
  • 将补全后的数组按每32个元素为一组拆分
  • 每组元素对应位权重求和后转成uint32类型即可

代码示例

import numpy as np

# 你的示例输入数组
input_arr = np.array([0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1], dtype=np.uint8)

# 计算需要填充的0的个数,保证总长度是32的倍数
pad_len = (32 - len(input_arr) % 32) % 32
# 示例中为高位补0,所以填充在数组开头;如果需要低位补0,改为(0, pad_len)即可
padded_arr = np.pad(input_arr, (pad_len, 0), constant_values=0)

# 按32个元素为一组拆分
grouped_arr = padded_arr.reshape(-1, 32).astype(np.uint32)

# 生成位权重:最高位对应2^31,最低位对应2^0
bit_weights = np.array([1 << i for i in reversed(range(32))], dtype=np.uint32)

# 每组计算对应的uint32数值
result = (grouped_arr * bit_weights).sum(axis=1).astype(np.uint32)

# 输出二进制验证结果
for val in result:
    print(bin(val))

运行以上代码输出的二进制结果和你给出的预期完全一致。如果你的需求是数组首元素对应32位整数的最低位,仅需把bit_weights的生成逻辑改为np.array([1 << i for i in range(32)], dtype=np.uint32)即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:24:00