2016-06-23 19 views
0

intを配列に代入したいとします。私が持っているのは、配列に整数を代入する

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

私はこのようなものを得たいと思います。int順序は重要ではありません。私はどのように

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

た、私はnp.unique(ラベル)を見つけ、辞書ます

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

をしかし、私はこの整数を割り当てることである次のステップにこだわっています配列ラベル。 、そして、

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

をラベル再マッピングするマッピングを使用します:

+0

あなたの例では、どのような出力を期待していますか? – 3kt

+0

私はscikit-learns [DictVectorizer](http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.DictVectorizer.html)を推奨します。 – sascha

+0

'np 'の呼び出しで引数' return_inverse = True'を使います。あなたの 'ラベル付けされた'配列のようなものを得るためにユニークです。まったく同じではありません(つまり、ゼロベースのインデックスを使用し、ラベルはソートされた順序で割り当てられます)が、十分に近いかもしれません。 –

答えて

0

あなたがすでに行っているものと同様のマッピング辞書を作成することができ

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

numpyのための必要はありませんが、タスクはPythtonベースで簡単に達成できます。

+0

ありがとう、それは魅力のように動作します。 '列挙(セット(ラベル)、1)'の代わりに、中: 私はあなたがマッピングを更新することができます はインデックス1 – Nufa

+0

を開始する[ラベルに私のマッピング[i]は+1]この 出力=を更新しますこの場合、スクリプトの後半でマッピングが再利用されます。 – Benjamin

+0

こんにちは、ありがとう – Nufa

関連する問題