如何使用 NumPy 将整数向量转换为二进制表示的矩阵?

5 python numpy

假设我有以下数组:

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

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

期望的输出:

[[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]]
Run Code Online (Sandbox Code Playgroud)

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

Geo*_*eom 0

有很多方法可以实现这一点。

一种方法是:

# 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])
Run Code Online (Sandbox Code Playgroud)

您还可以这样做:

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

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