2017-03-20 81 views
0

我有一個列表y和一個numpy矩陣X。它們對應即。 y[i]X[i]有關。 y由1或0組成。我希望隨機選擇a來自X的數據實例,其中對應的y值等於1,其中a是常數。從矩陣中隨機選擇正實例

回答

0

這應該做的工作

import numpy as np 

array = [1,2,3,4] 
number = np.random.choice(array, replace = False) 
print(number) 
idx = np.where(array==number)[0] 
print(idx) 
+0

如果您在問題中使用了相同的變量名稱,這將更容易看出這是否正確。例如,你可以用'y = [0,1,1,0,1,0]','X = np.array([10,11,12,13,14,15]'和'a = 4'。 –

0

我假設你要挑整排,其中Ÿ是你的樣品中1。您可以繪製的一個行的隨機抽樣,其中相應Ÿ值是1這樣的:

import numpy as np 
from itertools import compress 
from random import sample 

a = 2 
y = [0, 1, 1, 0, 1, 0, 1, 0, 1, 1] 
X = np.random.rand(10, 3) 

picked = sample(list(compress(X, y)), a) 

itertools.compress用於創建僅與行,其中相應列表y爲1.然後使用樣本函數從該列表中繪製大小爲a的隨機樣本。

0

你能做到這樣的:

import numpy as np 
X=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15]]) 
y=np.array([1,0,1,1,0]) 
a=2 
mat=X[y==1] 
rows = np.random.choice(len(mat), size=a,replace=False) 
mat=mat[rows,:] 
print(mat) 
[[ 7 8 9] 
[10 11 12]] 

在上面的代碼中,選擇mat=X[y==1]所有行,其中的y對應的值是1,然後np.random.choice(len(mat), size=a,replace=False)隨機選擇a不同的行。