2017-11-18 5 views
0

아래 코드를 벡터화하려고합니다.다른 배열을 인덱싱하는 값의 벡터화

for x in range (0, 500): 
     S = rand.choice(np.unique(Y)) 
     A = rand.choice(np.unique(X[Y==S])) 

Y 및 X는 인덱스의 값이 일치해야하는 배열입니다.

현 나는 크기 값 S

예의 배열을 X 통해서 어떻게 인덱스를 알아낼 수하지 않다, 그러나

S = np.random.choice(np.unique(Y),size=500) 

수 S를 변형 = 5 일 수

Y = [0,0,2,3,2,4] 
X = [1,2,1,3,4,2] 

S = [0,2,0,3,2] 
X[Y==S] => ([1,2],[1,4],[1,2],[3],[1,4]) <= Not sure how to get this 
A = [2,4,1,3,1] 

간단한 방법이 있나요?

답변

1

서투른 조금,하지만 당신은 팬더를 사용할 수 있는지, 지능형리스트로 isin()을 결합 : [X[Y.isin([s])].values for s in S]

: 당신이 X[Y==S]를 얻을 수

import numpy as np 
import pandas as pd 

Y = pd.Series([0,0,2,3,2,4]) 
X = pd.Series([1,2,1,3,4,2]) 
S = pd.Series([0,2,0,3,2]) 

[np.random.choice(X[Y.isin([s])].values) for s in S]