【问题标题】:How to convert a binary classes column to numpy array如何将二进制类列转换为 numpy 数组
【发布时间】: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 有点复杂的

标签: python pandas numpy scikit-learn


【解决方案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]]

【讨论】:

  • 谢谢,这就是我想要的,花了我几个小时来搜索这个:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-04
  • 2013-11-05
  • 1970-01-01
相关资源
最近更新 更多