如何将二进制类列转换为 numpy 数组

Posted

技术标签:

【中文标题】如何将二进制类列转换为 numpy 数组【英文标题】:How to convert a binary classes column to numpy array 【发布时间】:2017-05-15 11:52:25 【问题描述】:

我有一个这样的数组作为标签列(2 个标签:0 和 1),例如:

[0,1,0,1,1]

假设我想将此数组转换为形状为 (5,2) (5 个元素,2 个标签) 的 numpy 矩阵。如何使用任何 util 库以简单的方式做到这一点?

我想要的结果是这样的:

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

【问题讨论】:

您要添加另一个标签(0 到 1,反之亦然)? 我想问有没有什么简单的方法可以做到这一点,因为创建一个新的二维数组,遍历每个元素,如果存在则放 1 0,如果存在则放 0 1 有点复杂的 【参考方案1】:

你可以使用NumPy broadcasting -

(a[:,None] != np.arange(2)).astype(int)

示例运行 -

In [7]: a = np.array([0,1,0,1,1])

In [8]: (a[:,None] != np.arange(2)).astype(int)
Out[8]: 
array([[0, 1],
       [1, 0],
       [0, 1],
       [1, 0],
       [1, 0]])

# Convert to list if needed
In [14]: (a[:,None] != np.arange(2)).astype(int).tolist()
Out[14]: [[0, 1], [1, 0], [0, 1], [1, 0], [1, 0]]

【讨论】:

谢谢,这就是我想要的,花了我几个小时来搜索这个:)

以上是关于如何将二进制类列转换为 numpy 数组的主要内容,如果未能解决你的问题,请参考以下文章

在python中将数组的元素从科学计数法转换为十进制计数法

将 bz2 压缩二进制文件导入为 numpy 数组

Python:如何从 3D numpy/torch 数组中提取连接的组件(边界框)?

将二进制分类转换为多标签?

如何将 numpy 二维数组作为一种可以用 C++ 读取的二进制格式存储到磁盘上

如何在 numpy 中实现定点二进制支持