向量化索引另一个数组的值数组

时间:2017-11-18 06:44:30

标签: python vectorization

我正在尝试对下面的代码进行矢量化。

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

Y和X是索引中的值需要匹配的数组。

目前我将S修改为

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

但是,我无法弄清楚如何使用值数组S

来索引X.

size = 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 个答案:

答案 0 :(得分:1)

有点笨拙,但是如果你可以使用Pandas,请将isin()与列表理解结合起来:

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]

您可以使用X[Y==S]

获取[X[Y.isin([s])].values for s in S]