首页 > 解决方案 > 如何使用 NumPy 将整数向量转换为二进制表示矩阵?

问题描述

假设我有以下数组:

import numpy as np
I = np.array([0, 1, 2, 3, 15, 16, 32, 64, 128])

我想将数组中的每个项目转换为其二进制表示。

期望的输出:

[[0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 1]
 [0 0 0 0 0 0 1 0]
 [0 0 0 0 0 0 1 1]
 [0 0 0 0 1 1 1 1]
 [0 0 0 1 0 0 0 0]
 [0 0 1 0 0 0 0 0]
 [0 1 0 0 0 0 0 0]
 [1 0 0 0 0 0 0 0]]

最直接的方法是什么?谢谢!

标签: pythonnumpy

解决方案


有很多方法可以做到这一点。

一种方法:

# Your array
I = np.array([0, 1, 2, 3, 15, 16, 32, 64, 128])

B = ((I.reshape(-1,1) & (2**np.arange(8))) != 0).astype(int)
print(B[:,::-1])

你也可以这样做:

I = np.array([0, 1, 2, 3, 15, 16, 32, 64, 128], dtype=np.uint8)
print(np.unpackbits(I[:, np.newaxis], axis=1))

我个人会推荐第一种方法!干杯!


推荐阅读