2017-01-23 6 views
5

हम की तरह एक numpy सरणी है:एक और Numpy सरणी का उपयोग कर बहु ​​आयामी Numpy ऐरे के एकल तत्व कैसे सेट करें?

Array = np.zeros((2, 10, 10)) 

और हम इसे का एक तत्व है, एक और

indexes = np.array([0,0,0]) 

हम ऐसा कैसे कर सकते हैं द्वारा दिए गए सेट करना चाहते हैं?

Array[indexes] = 5 

सूचकांकों की सरणी ऐसी है कि प्रत्येक पंक्ति एक तत्व से मेल खाती है डेटा में सेट करने के रूप में a डेटा सरणी के रूप में और idx के साथ 5

+0

तुम भी (नहीं numpy.array के रूप में) एक सूची का उपयोग कर सकते हैं: 'सरणी [0, 0, 0] = 5' केवल पहले शून्य करने के लिए 5. – Lucas

उत्तर

7

को सरणी की प्रथम आयाम के प्रत्येक तत्व स्थापित कर रही है सरणी, तुम कर सकते हो -

a[tuple(idx.T)] = 5 

नमूना रन -

In [94]: a = np.zeros((2,2,3),dtype=int) 

In [95]: idx = np.array([[0,0,0],[1,1,0],[0,1,2]]) 

In [96]: a[tuple(idx.T)] = 5 

In [97]: a 
Out[97]: 
array([[[5, 0, 0], 
     [0, 0, 5]], 

     [[0, 0, 0], 
     [5, 0, 0]]]) 

In [98]: a[tuple(idx.T)] = [5,10,15] # or set different values 

In [99]: a 
Out[99]: 
array([[[ 5, 0, 0], 
     [ 0, 0, 15]], 

     [[ 0, 0, 0], 
     [10, 0, 0]]]) 

वैकल्पिक रूप से, हम np.ravel_multi_index साथ रैखिक सूचकांक की गणना कर सकता है और उसके बाद, np.put साथ काम प्रदर्शन तो जैसे -

np.put(a,np.ravel_multi_index(idx.T,a.shape),5) 

आप तीन आयामी सरणियों के साथ काम कर रहे हैं, तो हम तीन आयामी सूचकांक काट सकता है और करने के लिए आवंटित एक और तरीका है, तो जैसे -

a[idx[:,0],idx[:,1],idx[:,2]] = 5 

यदि यह सिर्फ एक तत्व सेट किया जा करने की जरूरत है, बस करना है -

01,235,
a[tuple(idx)] = 5 

नमूना रन -

In [118]: a = np.zeros((2,2,3),dtype=int) 

In [119]: idx = np.array([0,0,0]) 

In [120]: a[tuple(idx)] = 5 

In [121]: a 
Out[121]: 
array([[[5, 0, 0], 
     [0, 0, 0]], 

     [[0, 0, 0], 
     [0, 0, 0]]]) 
+0

धन्यवाद सेट यह बहुत उपयोगी था! मैं बस आपके उदाहरण के माध्यम से काम करने और इसे लागू करने के बाद टिप्पणी करना भूल गया, जिसमें कुछ दिन लगे। आपका धन्यावाद! – Fosa

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