ndarrays की इंडेक्सिंग मानक पायथन x[obj] सिंटैक्स का उपयोग करके की जा सकती है, जहां x सरणी है और obj चयन है।
तीन प्रकार की इंडेक्सिंग उपलब्ध हैं:
- फील्ड एक्सेस
- बेसिक स्लाइसिंग
- एडवांस्ड इंडेक्सिंग
किस प्रकार की इंडेक्सिंग होगी यह obj पर निर्भर करता है। इस खंड में, हम मुख्य रूप से बेसिक स्लाइसिंग और एडवांस्ड इंडेक्सिंग पर ध्यान केंद्रित करने जा रहे हैं।
हम एडवांस्ड इंडेक्सिंग को दो भागों में विभाजित कर सकते हैं:
- इंटीजर सरणी इंडेक्सिंग
- बूलियन इंडेक्सिंग
बेसिक स्लाइसिंग
स्लाइसिंग की पायथन बुनियादी अवधारणा को n आयामों में बेसिक स्लाइसिंग में विस्तारित किया गया है। पायथन स्लाइस ऑब्जेक्ट की तरह जिसे स्लाइस फ़ंक्शन को स्टार्ट, स्टॉप और स्टेप पैरामीटर देकर बनाया जाता है। विशिष्ट आउटपुट प्राप्त करने के लिए, स्लाइस ऑब्जेक्ट को सरणी के एक भाग को निकालने के लिए सरणी में पास किया जाता है।
उदाहरण 1
import numpy as np arr = np.arange(25) s = slice(2, 21, 4) print(arr[s])
आउटपुट
[ 2 6 10 14 18]
उपरोक्त उदाहरण में, हमने पहले arange() फ़ंक्शन का उपयोग करके एक ndarray ऑब्जेक्ट (arr) बनाया। फिर एक स्लाइस ऑब्जेक्ट बनाया गया जिसमें स्टार्ट, स्टॉप और स्टेप मान असाइन किए गए (s)। जब हमने स्लाइस ऑब्जेक्ट को ndarray में पास किया, तो हमें इंडेक्स 2 से शुरू होकर 21 तक 4 के स्टेप के साथ सरणी का भाग (स्लाइस) मिला।
उपरोक्त प्रोग्राम को लिखने का एक और तरीका:
# उपरोक्त प्रोग्राम लिखने का एक और तरीका import numpy as np arr = np.arange(25) s = arr[2:21:4] print(s)
आउटपुट
[ 2 6 10 14 18]
एकल आइटम स्लाइस करना
# सरणी से एकल आइटम स्लाइस करें import numpy as np arr = np.arange(10) s = arr[9] print(s)
आउटपुट
9
इंडेक्स से शुरू होने वाले आइटम स्लाइस करना
# इंडेक्स से शुरू होने वाले आइटम स्लाइस करें import numpy as np arr = np.arange(10) s = arr[3:] print(s)
आउटपुट
[3 4 5 6 7 8 9]
इंडेक्स के बीच आइटम स्लाइस करना
# इंडेक्स के बीच आइटम स्लाइस करें import numpy as np arr = np.arange(10) s = arr[3:7] print(s)
आउटपुट
[3 4 5 6]
उपरोक्त दो विधियों को बहु-आयामी ndarray पर भी लागू किया जाएगा, जैसे नीचे:
# इंडेक्स के बीच आइटम स्लाइस करें import numpy as np arr = np.array([[[1], [2], [3]], [[4], [5], [6]], [[7], [8], [9]]]) s = arr[1:] print(s)
आउटपुट
[[[4] [5] [6]] [[7] [8] [9]]]
एडवांस्ड इंडेक्सिंग
इंटीजर सरणी इंडेक्सिंग:
आइए पूर्णांकों के साथ एक साधारण सरणी बनाएं:
arr = np.array([[1, 2], [3, 4], [5, 6]]) print(arr)
आउटपुट
[[1 2] [3 4] [5 6]]
आइए सरणी से एक विशिष्ट तत्व चुनने का प्रयास करें, जैसे बहु-आयामी ndarray से रो इंडेक्स [0, 1, 2] और कॉलम इंडेक्स [1, 0, 1] वाले तत्व।
import numpy as np arr = np.array([[1, 2], [3, 4], [5, 6]]) s = arr[[0, 1, 2], [1, 0, 1]] print(s)
आउटपुट
[2 3 6]
0 इंडेक्स के साथ चयन करने से आपको पहली पंक्ति मिलेगी:
>>> arr = np.array([[1, 2], [3, 4], [5, 6]]) >>> print(arr[0]) [1 2]
इसी तरह, हम सरणी से एकल आइटम चुन सकते हैं, उदाहरण के लिए - 1 को रो इंडेक्स और 1 को कॉलम इंडेक्स तत्व के रूप में चुनें जो सरणी मान 4 देता है।
>>> print(arr[[1], [1]]) [4]
हम जोड़ जैसे अंकगणितीय संचालन कर सकते हैं और जोड़ करने के बाद किसी विशेष इंडेक्स का मान वापस कर सकते हैं।
>>> print(arr[[1], [1]] + 1) [5]
जैसा कि हम देख सकते हैं इंडेक्स मान 1 से बढ़ जाता है लेकिन वास्तविक सरणी वही रहती है।
>>> arr array([[1, 2], [3, 4], [5, 6]])
लेकिन हम सरणी के मानों को बदल सकते हैं और सरणी की नई प्रति वापस कर सकते हैं।
>>> arr[[1], [1]] += 1 >>> arr array([[1, 2], [3, 5], [5, 6]])
बूलियन इंडेक्सिंग
हम बूलियन इंडेक्सिंग का उपयोग तब करते हैं जब परिणाम बूलियन ऑपरेशन का परिणाम होने वाला होता है।
>>> arr = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])
>>> arr
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
उन मानों को लौटाता है जो 1 हैं।
>>> arr[arr == 1] array([1])
उन मानों को लौटाता है जो सम संख्याएं हैं।
>>> arr[arr % 2 == 0] array([ 0, 2, 4, 6, 8, 10])