2016-03-03 25 views
5

यह टुकड़ा करने वाला उदाहरण मानक सूचियों के समान परिणाम क्यों नहीं देता है? यह काम करता है जैसे कि यह पहले an[:2] = bn[:2] और फिर bn[:2] = an[:2] का मूल्यांकन करता है।यह स्लाइसिंग उदाहरण NumPy में क्यों काम नहीं करता है वैसे ही यह मानक सूचियों के साथ काम करता है?

import numpy as np 

l1 = [1, 2, 3] 
l2 = [4, 5, 6] 

a = list(l1) 
b = list(l2) 

an = np.array(a) 
bn = np.array(b) 

print(a, b) 
a[:2], b[:2] = b[:2], a[:2] 
print(a, b) 

print(an, bn) 
an[:2], bn[:2] = bn[:2], an[:2] 
print(an, bn) 

आउटपुट:

-------------------- 
[1, 2, 3] [4, 5, 6] 
[4, 5, 3] [1, 2, 6] 
-------------------- 
[1 2 3] [4 5 6] 
[4 5 3] [4 5 6] 
-------------------- 

अगर मैं इस तरह यह करना - सब कुछ काम करता है:

dummy = an[:2] 
an[:2] = bn[:2] 
bn[:2] = dummy 

उत्तर

6

सूचियों a[:2] के लिए पहले दो तत्वों के साथ सूची की एक प्रति है, numpy के लिए सरणी यह ​​केवल एक संदर्भ है। आपको एक प्रतिलिपि बनाने की आवश्यकता है, स्पष्ट रूप से:

+0

एचएम। धन्यवाद। जैसे ही कूलडाउन चला जाता है, मैं इसे स्वीकार करूंगा। – userqwerty1

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