如何将二进制类列转换为 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:如何从 3D numpy/torch 数组中提取连接的组件(边界框)?