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

8

我有一个类似于标签列的数组(包含2个标签:0和1),例如:

[0,1,0,1,1]

假设我想将这个数组转换成一个形状为(5,2)的numpy矩阵(5个元素,2个标签)。我可以如何使用任何实用程序库以一种简单的方式完成这个操作?
我想要的结果是这样的:
[[0,1][1,0],[0,1],[1,0],[1,0]]

你想添加另一个标签(从0到1,反之亦然)吗? - ppasler
我想问一下是否有简单的方法来做到这一点,因为创建一个新的二维数组,遍历每个元素,如果存在1则放置1,如果存在0则放置0有点复杂。 - xtiger
1个回答

8
你可以使用 NumPy广播 -
(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]]

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接