2017-04-19 14 views
5

से 'कुछ' यादृच्छिक बिंदुओं का चयन करें मेरे पास दो संबंधित numpy arrays, X और y हैं। मुझे X से यादृच्छिक पंक्तियों का चयन करने की आवश्यकता है और इसे एक सरणी में संग्रहीत करें, संबंधित y मान और इसे यादृच्छिक रूप से चुने गए बिंदुओं का सूचकांक संलग्न करता है।numpy array

मेरे पास एक और सरणी index है जो इंडेक्स की एक सूची संग्रहीत करता है जिसे मैं नमूना नहीं करना चाहता हूं।

मैं यह कैसे कर सकता हूं?

नमूना डेटा:

index = [2,3] 
X = np.array([[0.3,0.7],[0.5,0.5] ,[0.2,0.8], [0.1,0.9]]) 
y = np.array([[0], [1], [0], [1]]) 

इन X के बेतरतीब ढंग से चयन किया गया था, तो (जहां n=2):

randomylSelected = np.array([[0.3,0.7],[0.5,0.5]]) 

वांछित आउटपुट होगा:

index = [0,1,2,3] 
randomlySelectedY = [0,1] 

मैं कैसे कर सकता है यह करो?

उत्तर

0

मैं बूलियन मानों की एक सरणी का प्रबंधन करता हूं जो मैं लगातार इंडेक्स सरणी को टुकड़ा करने के लिए उपयोग करता हूं और परिणाम से यादृच्छिक रूप से चयन करता हूं।

n = X.shape[0] 
sampled = np.empty(n, dtype=np.bool) 
sampled.fill(False) 
rng = np.arange(n) 

k = 2 

while not sampled.all(): 
    sample = np.random.choice(rng[~sampled], size=k, replace=False) 
    print(X[sample]) 
    print() 
    print(y[sample]) 
    print() 
    sampled[sample] = True 

[[ 0.2 0.8] 
[ 0.5 0.5]] 

[[0] 
[1]] 

[[ 0.3 0.7] 
[ 0.1 0.9]] 

[[0] 
[1]] 
+0

@scutnex आप रिकॉर्ड से क्या मतलब है पर निर्भर करता है। मैं 'नमूना' सरणी को 'ट्रू' मानों के साथ अपडेट कर रहा हूं ... जो इसे रिकॉर्ड कर रहा है। यह करने के लिए यह एक एल्गोरिदम है। स्वाद के अनुसार tweaked कई चीजें हैं। – piRSquared

0

आप किसी भी पंक्ति को चुनने की एक समान संभावना के साथ यादृच्छिक पर n पंक्तियों का चयन करने के लिए, चाहते हैं:

n = 2 #for sake of argument 
randomlySelectedY = np.argsort(np.random.random(4))[:n] #generate a 1x4 array of random, uniformly distributed numbers and then select the indices of the lowest n numbers 

randomylSelected = X[randomlySelectedY] 
index = np.linspace(1,np.size(X[:,1]),np.size(X[:,1]))