Table of Contents
ToggleNumPy में **Copy** और **View** का अंतर समझना महत्वपूर्ण है, खासकर जब आप arrays के साथ काम कर रहे होते हैं। दोनों ही arrays के समान दिखते हैं, लेकिन उनके बीच एक बड़ा अंतर है जो आपके डेटा को कैसे और कहाँ स्टोर किया जाता है, पर निर्भर करता है।
– **Copy**: एक नया array होता है, जो मूल array के डेटा को कॉपी करता है। यदि आप copy को बदलते हैं, तो मूल array पर कोई असर नहीं पड़ेगा। – **View**: यह मूल array का एक व्यू (दृश्य) होता है। View मूल array के डेटा को साझा करता है, यानी यदि आप view को बदलते हैं तो मूल array भी प्रभावित होगा, और इसके विपरीत।
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
arr[0] = 42
print(arr) # Output: [42 2 3 4 5]
print(x) # Output: [1 2 3 4 5]
यहाँ, हमने arr.copy() का उपयोग करके एक नई कॉपी बनाई और फिर मूल array में पहला तत्व बदल दिया। जैसा कि आप देख सकते हैं, copy में कोई बदलाव नहीं आया है।
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
arr[0] = 42
print(arr) # Output: [42 2 3 4 5]
print(x) # Output: [42 2 3 4 5]
यहां, जब हमने मूल array arr[0] = 42 को बदला, तो x (जो कि view है) भी प्रभावित हुआ। क्योंकि view मूल array का डेटा शेयर करता है।
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
x[0] = 31
print(arr) # Output: [31 2 3 4 5]
print(x) # Output: [31 2 3 4 5]
यहां, हमने view x[0] = 31 को बदल दिया, और जैसा कि हमने पहले कहा, मूल array arr भी प्रभावित हो गया है।
जैसा कि हमने देखा, copy डेटा का मालिक होता है, जबकि view नहीं। यह जानने के लिए कि कोई array अपने डेटा का मालिक है या नहीं, आप array के base attribute का उपयोग कर सकते हैं।
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
y = arr.view()
print(x.base) # Output: None
print(y.base) # Output: [1 2 3 4 5]
जब arr.copy() किया गया, तो x.base None था, जो यह दर्शाता है कि यह array अपने डेटा का मालिक है। लेकिन y.base ने मूल array arr को संदर्भित किया, क्योंकि यह view है।
