【问题标题】:Assigning int number to an array将 int 数分配给数组
【发布时间】:2016-06-23 10:00:04
【问题描述】:

我想将 int 分配给一个数组。我有的是;

label = ['rest', 'rest', 'ball', 'cat', 'rest']

而我想得到的是这样的东西,int 顺序并不重要;

labeled = [1, 1, 2, 3, 1]

我的做法是,我找到 np.unique(label) 并制作 dict:

labelDict = dict(zip(label, np.arange(1,4))

但是,我被困在下一步,即将这个整数分配给那个数组标签。

【问题讨论】:

  • 您希望从示例中的数据得到什么输出?
  • 我推荐 scikit-learns DictVectorizer
  • 在对np.unique 的调用中使用参数return_inverse=True 来获得类似labeled 序列的内容。它不会完全相同(即它使用从零开始的索引,并且标签按排序顺序分配),但可能足够接近。

标签: arrays python-2.7 numpy


【解决方案1】:

您可以创建一个映射字典,类似于您已经在做的:

mapping = {i:idx for idx, i in enumerate(set(label))}

然后,使用映射重新映射标签:

output = [mapping[i] for i in label]

不需要 numpy,使用基础 Pyhton 即可轻松完成任务。

【讨论】:

  • 谢谢,它就像魅力一样。我更新此输出 = [mapping[i] +1 for i in label] 以从索引 1 开始。
  • 您可以更新映射:enumerate(set(label), 1),以防稍后在脚本中重新使用映射。
猜你喜欢
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 2019-10-07
  • 2019-08-02
  • 1970-01-01
  • 2015-01-15
相关资源
最近更新 更多