2012-01-10 13 views
5

में इंडेक्स सरणी I देखते हुए, मैं डेटा सरणी D के मान कैसे सेट करूं जिनके सूचकांक I में मौजूद नहीं हैं?मैं इस सरणी इंडेक्सिंग को numpy

उदाहरण: I और D से मुझे A कैसे प्राप्त करें?

I = array([[1,1], [2,2], [3,3]]) 

D = array([[ 1, 2, 3, 4, 5, 6], 
      [ 7, 8, 9, 1, 2, 3], 
      [ 4, 5, 6, 7, 8, 9], 
      [ 1, 2, 3, 4, 5, 6], 
      [ 7, 8, 9, 1, 2, 3]]) 

A = array([[ 0, 0, 0, 0, 0, 0], 
      [ 0, 8, 0, 0, 0, 0], 
      [ 0, 0, 6, 0, 0, 0], 
      [ 0, 0, 0, 4, 0, 0], 
      [ 0, 0, 0, 0, 0, 0]]) 

संपादित करें: मैं कैसे मामलों में जहां I और d बड़े हैं के लिए एक शॉट में यह करने के लिए की तलाश में हूँ।

उत्तर

10

सरल समाधान:

A = zeros(D.shape) 
for i, j in I: 
    A[i, j] = D[i, j] 

vectorized:

A = zeros(D.shape) 
i, j = I.T 
A[i, j] = D[i, j] 
+0

वहाँ यह करने के लिए एक उचित vectorized रास्ता नहीं है? 'डी' और 'ए' दोनों बड़े होंगे, इसलिए मुझे इसके बारे में जाने के लिए एक अक्षम तरीके से डर है। – ajwood

+0

@ajwood: पता लगाया और वेक्टरकृत संस्करण पोस्ट किया। –

संबंधित मुद्दे