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

Python中二进制数组转整数及二进制矩阵转索引矩阵的实现方法咨询

嘿,这两个Python里的数组/矩阵转换问题我经常碰到,给你整理了几种实用的解决方法,看看哪种适合你的场景:

1. 如何在Python中将二进制数组转换为整数?

这里有两种常用的方式,分别适配不同需求:

  • 字符串拼接法(简单直观)
    把二进制数组里的每个元素转成字符串,拼接成完整的二进制字符串后,用int()函数指定进制为2来转换:

    binary_array = [1, 0, 1, 1]
    decimal_number = int(''.join(map(str, binary_array)), 2)
    print(decimal_number)  # 输出:11
    

    这种方法代码简洁,容易理解,适合中小规模的数组。

  • 位运算法(高效性能)
    如果处理的二进制数组很大,位运算的方式会更高效,不需要额外的字符串操作:

    binary_array = [1, 0, 1, 1]
    decimal_number = 0
    for bit in binary_array:
        decimal_number = (decimal_number << 1) | bit
    print(decimal_number)  # 输出:11
    

    原理是每次把当前结果左移一位(相当于乘以2),再和当前的二进制位做或运算,逐步构建出最终的整数。

2. 二进制矩阵转索引矩阵的实现

针对你给出的矩阵a,每行只有一个1,要得到每行1的索引组成的列矩阵b,同样有两种实现方式:

  • 纯Python列表操作(无需额外库)
    直接遍历矩阵的每一行,用index(1)找到该行中1的位置,再把结果包装成列矩阵的格式:

    a = [[1, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]
    b = [[row.index(1)] for row in a]
    print(b)
    # 输出:[[0], [2], [1], [3], [4]]
    

    这种方法不需要安装任何第三方库,代码简洁直接,适合小规模矩阵。

  • Numpy实现(高效处理大规模矩阵)
    如果你的矩阵很大,用Numpy的向量操作会快很多,利用argmax()函数找到每行最大值(也就是1)的索引,再通过reshape()转成列矩阵:

    import numpy as np
    
    a = np.array([[1, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]])
    b = np.argmax(a, axis=1).reshape(-1, 1)
    print(b)
    # 输出:
    # [[0]
    #  [2]
    #  [1]
    #  [3]
    #  [4]]
    

    axis=1表示按行查找最大值的索引,reshape(-1,1)会自动把一维数组转换成列数为1的二维矩阵。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:30:59