Numpy:将标签转换为索引

Posted

技术标签:

【中文标题】Numpy:将标签转换为索引【英文标题】:Numpy : convert labels into indexes 【发布时间】:2018-10-12 06:28:09 【问题描述】:

是否可以使用numpy 将字符串向量转换为索引向量?

假设我有一个字符串数组,如['ABC', 'DEF', 'GHI', 'DEF', 'ABC'] 等。我希望将其更改为整数数组,如[0,1,2,1,0]。可以使用numpy吗?我知道Pandas 有一个Series 类可以做到这一点,感谢this answer。 numpy 也有类似的东西吗?

编辑: np.unique() 返回所有元素的唯一值。我要做的是将Iris dataset 中的标签转换为索引,例如Iris-setosa 为0,Iris-versicolor 为1,Iris-virginica 为2。有没有办法使用numpy 做到这一点?

【问题讨论】:

【参考方案1】:

使用numpy.unique 和参数return_inverse=True,但处理NaNs 有区别 - 检查factorizing values:

L = ['ABC', 'DEF', 'GHI', 'DEF', 'ABC']

print (np.unique(L, return_inverse=True)[1])
[0 1 2 1 0]

pandas factorize 也适用于列表或数组:

print (pd.factorize(L)[0])
[0 1 2 1 0]

【讨论】:

以上是关于Numpy:将标签转换为索引的主要内容,如果未能解决你的问题,请参考以下文章

将具有 n 级分层索引的 Pandas DataFrame 转换为 n-D Numpy 数组

如何在 Numpy 中将索引数组转换为掩码数组?

将 2D numpy 数组重塑为 3 个具有 x,y 索引的 1D 数组

numpy array TypeError:只有整数标量数组可以转换为标量索引

如何在 numpy 数组上定义一个使用数组索引查找字典的函数?

为啥标签与 pandas、itertools 和 numpy 索引不一致?