2016-06-23 7 views
0

int 배열에 할당하고 싶습니다. 내가 가진 것은;배열에 int 번호 할당

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

그리고 나는 이렇게하려고합니다. int 순서는 중요하지 않습니다.

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

I이었다 는가, 나는 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부터 시작하는 색인을 사용하고 레이블은 정렬 된 순서로 할당됩니다). 그러나 충분히 가까울 수도 있습니다. –

답변

0

당신은 당신이 이미하고있는 것과 유사한 매핑 사전을 만들 수 있습니다

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

NumPy와 필요가 없습니다를의 작업은 Pyhton 기반으로 쉽게 수행 할 수 있습니다.

+0

감사합니다, 그것은 매력처럼 작동합니다. '열거 (세트 (라벨), 1)'대신에 : 나는 당신은 매핑을 업데이트 할 수 있습니다 인덱스 1 – Nufa

+0

시작하는 [라벨에 난에 대한 매핑 [I] +1이 출력 = 업데이트 스크립트에서 나중에 매핑을 다시 사용합니다. – Benjamin

+0

아, 고마워. – Nufa