पायथन में एरेज़ के लिए गाइड

पायथन में एरेज़ के लिए गाइड

परिचय

कल्पना कीजिए कि आपके फ़ोन पर आपके पसंदीदा गानों की एक प्लेलिस्ट है। यह प्लेलिस्ट एक सूची है जहां प्रत्येक गीत को एक विशिष्ट क्रम में रखा गया है। आप पहला गाना बजा सकते हैं, दूसरे पर छोड़ सकते हैं, पांचवें पर जा सकते हैं, इत्यादि। यह प्लेलिस्ट कंप्यूटर प्रोग्रामिंग में एक सरणी की तरह है।

ऐरे सबसे मौलिक और व्यापक रूप से उपयोग की जाने वाली डेटा संरचनाओं में से एक है।

संक्षेप में, एक सरणी एक विशिष्ट क्रम में कई वस्तुओं (जैसे संख्याएं, वर्ण, या यहां तक ​​कि अन्य सरणी) को संग्रहीत करने का एक संरचित तरीका है, और यदि आप इसकी स्थिति (सूचकांक) जानते हैं तो आप किसी भी आइटम को तुरंत एक्सेस, संशोधित या हटा सकते हैं।

इस गाइड में, हम आपको सरणी डेटा संरचना का एक व्यापक अवलोकन देंगे। सबसे पहले, हम देखेंगे कि ऐरे क्या हैं और उनकी मुख्य विशेषताएं क्या हैं। फिर हम पायथन की दुनिया में संक्रमण करेंगे, यह पता लगाएंगे कि वास्तविक दुनिया के परिदृश्यों में एरे को कैसे कार्यान्वित, हेरफेर और लागू किया जाता है।

ऐरे डेटा संरचना को समझना

ऐरे कंप्यूटर विज्ञान और प्रोग्रामिंग में उपयोग की जाने वाली सबसे पुरानी और सबसे मौलिक डेटा संरचनाओं में से एक हैं। उनकी सरलता, कुछ कार्यों में उनकी दक्षता के साथ मिलकर, उन्हें डेटा प्रबंधन और हेरफेर के क्षेत्र में रुचि रखने वाले किसी भी व्यक्ति के लिए एक प्रमुख विषय बनाती है।

एक सारणी वस्तुओं का एक संग्रह है, आमतौर पर इसी प्रकार का, संग्रहित किया है सन्निहित स्मृति स्थान.

यह सन्निहित भंडारण सरणियों को उसके सूचकांक को देखते हुए किसी भी तत्व तक निरंतर समय तक पहुंच प्रदान करने की अनुमति देता है। किसी सारणी में प्रत्येक आइटम को a कहा जाता है तत्व, और सरणी में किसी तत्व की स्थिति उसके द्वारा परिभाषित की जाती है अनुक्रमणिका, जो आमतौर पर शून्य से शुरू होता है.

उदाहरण के लिए, पूर्णांकों की एक सरणी पर विचार करें: [10, 20, 30, 40, 50]. यहाँ, तत्व 20 का एक सूचकांक है 1:

पायथन सरणी अनुक्रमण

कई हैं फायदे हमारे डेटा को संग्रहीत करने के लिए सरणियों का उपयोग करना। उदाहरण के लिए, उनके मेमोरी लेआउट के कारण, सरणियाँ इसकी अनुमति देती हैं ओ (1) (निरंतर) किसी तत्व को उसके सूचकांक द्वारा एक्सेस करते समय समय जटिलता। यह विशेष रूप से तब फायदेमंद होता है जब हमें तत्वों तक यादृच्छिक पहुंच की आवश्यकता होती है। इसके अतिरिक्त, सारणियों को संग्रहीत किया जाता है सन्निहित स्मृति स्थान, जिससे बेहतर कैश स्थानीयता और कुछ परिचालनों में समग्र प्रदर्शन में सुधार हो सकता है। सरणियों का उपयोग करने का एक और उल्लेखनीय लाभ यह है कि, चूंकि एक बार घोषित होने के बाद सरणियों का एक निश्चित आकार होता है, इसलिए मेमोरी को प्रबंधित करना और अप्रत्याशित ओवरफ्लो या आउट-ऑफ-मेमोरी त्रुटियों से बचना आसान होता है।

नोट: ऐरे उन परिदृश्यों में विशेष रूप से उपयोगी होते हैं जहां संग्रह का आकार पहले से ज्ञात होता है और स्थिर रहता है, या जहां सम्मिलन और विलोपन की तुलना में यादृच्छिक पहुंच अधिक बार होती है।

दूसरी ओर, ऐरे अपने स्वयं के सेट के साथ आते हैं सीमाओं. पारंपरिक सरणियों की प्राथमिक सीमाओं में से एक उनकी है निर्धारित माप. एक बार कोई सारणी बन जाने के बाद उसका आकार बदला नहीं जा सकता। इससे स्मृति की बर्बादी (यदि सरणी बहुत बड़ी है) या आकार बदलने की आवश्यकता (यदि सरणी बहुत छोटी है) जैसी समस्याएं हो सकती हैं। इसके अलावा, किसी सरणी के बीच में किसी तत्व को डालने या हटाने के लिए तत्वों को स्थानांतरित करने की आवश्यकता होती है, जिससे पर) इन परिचालनों के लिए समय की जटिलता।

यह सब संक्षेप में बताने के लिए, आइए इस गाइड की शुरुआत से गीत प्लेलिस्ट उदाहरण का उपयोग करके सरणियों की मुख्य विशेषताओं का वर्णन करें। एक सारणी एक डेटा संरचना है जो:

  • अनुक्रमित है: जैसे आपकी प्लेलिस्ट के प्रत्येक गाने में एक संख्या होती है (1, 2, 3,…), किसी सरणी में प्रत्येक तत्व का एक सूचकांक होता है। लेकिन, अधिकांश प्रोग्रामिंग भाषाओं में, सूचकांक 0 से शुरू होता है। इसलिए, पहला आइटम सूचकांक 0 पर है, दूसरा सूचकांक 1 पर है, और इसी तरह।

  • निश्चित आकार है: जब आप 10 गानों के लिए एक प्लेलिस्ट बनाते हैं, तो आप पहले एक को हटाए बिना 11वां गाना नहीं जोड़ सकते। इसी प्रकार, सारणियों का एक निश्चित आकार होता है। एक बार जब आप एक निश्चित आकार की सरणी बना लेते हैं, तो आप उसकी क्षमता से अधिक आइटम नहीं जोड़ सकते।

  • सजातीय है: आपकी प्लेलिस्ट के सभी गाने संगीत ट्रैक हैं। इसी प्रकार, किसी सारणी में सभी तत्व एक ही प्रकार के होते हैं। यदि आपके पास पूर्णांकों की एक सरणी है, तो आप अचानक उसमें एक टेक्स्ट स्ट्रिंग संग्रहीत नहीं कर सकते।

  • सीधी पहुंच है: यदि आप अपनी प्लेलिस्ट में 7वां गाना सुनना चाहते हैं, तो आप सीधे उस पर जा सकते हैं। इसी तरह, सरणियों के साथ, यदि आप इसका सूचकांक जानते हैं तो आप किसी भी तत्व तक तुरंत पहुंच सकते हैं।

  • सन्निहित स्मृति: यह थोड़ा अधिक तकनीकी है. जब कंप्यूटर की मेमोरी में एक ऐरे बनाया जाता है, तो यह मेमोरी के एक निरंतर ब्लॉक पर कब्जा कर लेता है। इसे स्कूल में आसन्न लॉकरों की एक पंक्ति की तरह समझें। प्रत्येक लॉकर एक दूसरे के बगल में है, बीच में कोई खाली जगह नहीं है।

पायथन और ऐरे

पायथन, जो अपने लचीलेपन और उपयोग में आसानी के लिए जाना जाता है, सरणियों के साथ काम करने के कई तरीके प्रदान करता है। जबकि पायथन में कुछ अन्य भाषाओं की तरह मूल सरणी डेटा संरचना नहीं है, यह शक्तिशाली विकल्प प्रदान करता है जो समान रूप से कार्य कर सकते हैं और विस्तारित क्षमताएं भी प्रदान कर सकते हैं।

पहली नजर में, पायथन की सूची एक सरणी का पर्यायवाची लग सकता है, लेकिन विचार करने के लिए सूक्ष्म अंतर और बारीकियाँ हैं:

सूची ऐरे
एक अंतर्निहित पायथन डेटा संरचना पायथन में मूल नहीं - वे `सरणी` मॉड्यूल से आते हैं
गतिशील आकार निश्चित (पूर्वनिर्धारित) आकार
विभिन्न डेटा प्रकार के आइटम रख सकते हैं एक ही प्रकार की वस्तुएँ पकड़ें
हेरफेर के लिए अंतर्निहित तरीकों की एक श्रृंखला प्रदान करें बाहरी मॉड्यूल आयात करने की आवश्यकता है
एक्सेस ऑपरेशंस के लिए O(1) समय जटिलता एक्सेस ऑपरेशंस के लिए O(1) समय जटिलता
अधिक मेमोरी का उपभोग करें अधिक मेमोरी कुशल

इस तालिका को देखकर यह प्रश्न स्वाभाविक रूप से उठता है - "कब कौन सा उपयोग करना है?". ठीक है, यदि आपको एक ऐसे संग्रह की आवश्यकता है जो गतिशील रूप से बढ़ या सिकुड़ सके और मिश्रित डेटा प्रकारों को धारण कर सके, तो पायथन की सूची जाने का रास्ता है। हालाँकि, समान प्रकार के तत्वों के साथ अधिक मेमोरी-कुशल संग्रह की आवश्यकता वाले परिदृश्यों के लिए, आप पायथन का उपयोग करने पर विचार कर सकते हैं array मॉड्यूल या NumPy जैसे बाहरी पुस्तकालय।

RSI सरणी पायथन में मॉड्यूल

जब अधिकांश डेवलपर्स पायथन में सरणियों के बारे में सोचते हैं, तो वे अक्सर सूचियों के बारे में सोचने में चूक जाते हैं। हालाँकि, पायथन अपने बिल्ट-इन के माध्यम से एक अधिक विशिष्ट सरणी संरचना प्रदान करता है array मापांक। यह मॉड्यूल पायथन में बुनियादी सी-शैली डेटा प्रकारों का स्थान-कुशल भंडारण प्रदान करता है।

जबकि पायथन सूचियाँ अविश्वसनीय रूप से बहुमुखी हैं और किसी भी प्रकार की वस्तु को संग्रहीत कर सकती हैं, वे कभी-कभी अत्यधिक हो सकती हैं, खासकर जब आपको केवल पूर्णांक या फ्लोट्स जैसे बुनियादी डेटा प्रकारों का संग्रह संग्रहीत करने की आवश्यकता होती है। array मॉड्यूल ऐसे ऐरे बनाने का एक तरीका प्रदान करता है जो विशिष्ट डेटा प्रकारों के लिए सूचियों की तुलना में अधिक मेमोरी कुशल हैं।

एक सरणी बनाना

का उपयोग करने के लिए array मॉड्यूल, आपको सबसे पहले इसे आयात करना होगा:

from array import array

एक बार आयात करने के बाद, आप इसका उपयोग करके एक सरणी बना सकते हैं array() निर्माता:

arr = array('i', [1, 2, 3, 4, 5])
print(arr)

यहां ही 'i' तर्क इंगित करता है कि सरणी हस्ताक्षरित संग्रहीत होगी पूर्णांकों. कई अन्य प्रकार के कोड उपलब्ध हैं, जैसे 'f' फ्लोट्स के लिए और 'd' युगल के लिए.

तत्वों तक पहुँचना और संशोधित करना

आप किसी सरणी में तत्वों तक पहुंच और संशोधित कर सकते हैं, जैसे आप किसी सूची के साथ करते हैं:

print(arr[2]) 

और अब, आइए तत्व का मान बदलकर उसे संशोधित करें 6:

arr[2] = 6
print(arr) 

सरणी के तरीके

RSI array मॉड्यूल सरणियों में हेरफेर करने के लिए कई तरीके प्रदान करता है:

  • append() - सरणी के अंत में एक तत्व जोड़ता है:

    arr.append(7)
    print(arr) 
  • extend() - पुनरावर्तनीय तत्वों को अंत में जोड़ता है:

    arr.extend([8, 9])
    print(arr) 
  • pop() - तत्व को हटाता है और दिए गए स्थान पर लौटाता है:

    arr.pop(2)
    print(arr) 
  • remove(): निर्दिष्ट मान की पहली घटना को हटाता है:

    arr.remove(2)
    print(arr) 
  • reverse(): सरणी के क्रम को उलट देता है:

    arr.reverse()
    print(arr) 

नोट: हमने यहां जो विधियां सूचीबद्ध की हैं, उससे कहीं अधिक विधियां हैं। को देखें आधिकारिक पायथन प्रलेखन में सभी उपलब्ध विधियों की सूची देखने के लिए array मॉड्यूल।

जब array मॉड्यूल बुनियादी डेटा प्रकारों को संग्रहीत करने के लिए अधिक मेमोरी-कुशल तरीका प्रदान करता है, इसे याद रखना आवश्यक है सीमाओं. सूचियों के विपरीत, सरणियाँ हैं सजातीय. इसका मतलब है कि सरणी में सभी तत्व एक ही प्रकार के होने चाहिए। इसके अलावा, आप केवल स्टोर ही कर सकते हैं बुनियादी सी-शैली डेटा प्रकार सरणियों में. यदि आपको कस्टम ऑब्जेक्ट या अन्य पायथन प्रकारों को संग्रहीत करने की आवश्यकता है, तो आपको एक सूची या अन्य डेटा संरचना का उपयोग करना होगा।

NumPy सारणियाँ

NumPy, न्यूमेरिकल पायथन का संक्षिप्त रूप, पायथन में संख्यात्मक गणनाओं के लिए एक मूलभूत पैकेज है। इसकी प्राथमिक विशेषताओं में से एक इसका शक्तिशाली होना है एन-आयामी सरणी ऑब्जेक्ट, जो गणितीय, तार्किक, आकार हेरफेर और बहुत कुछ सहित सरणियों पर तेज़ संचालन प्रदान करता है।

NumPy सरणियाँ Python के बिल्ट-इन की तुलना में अधिक बहुमुखी हैं array मॉड्यूल और डेटा विज्ञान और मशीन लर्निंग परियोजनाओं में प्रमुख हैं।

NumPy Arrays का उपयोग क्यों करें?

सबसे पहली बात जो दिमाग में आती है प्रदर्शन. NumPy सरणियाँ C में कार्यान्वित की जाती हैं और अनुकूलित एल्गोरिदम और सन्निहित मेमोरी स्टोरेज के लाभों के कारण कुशल मेमोरी स्टोरेज और तेज़ संचालन की अनुमति देती हैं।

जबकि पायथन की अंतर्निहित सूचियाँ और सरणियाँ एक-आयामी हैं, NumPy सरणियाँ हो सकती हैं बहुआयामी, जो उन्हें मैट्रिक्स या टेंसर का प्रतिनिधित्व करने के लिए आदर्श बनाता है।

सर्वोत्तम प्रथाओं, उद्योग-स्वीकृत मानकों और शामिल चीट शीट के साथ, Git सीखने के लिए व्यावहारिक मार्गदर्शिका देखें। Googling Git कमांड को रोकें और वास्तव में सीखना यह!

अंततः, NumPy एक प्रदान करता है कार्यों की विशाल श्रृंखला इन सरणियों पर काम करने के लिए, बुनियादी अंकगणित से लेकर उन्नत गणितीय संचालन, पुनः आकार देना, विभाजन करना, और बहुत कुछ।

नोट: जब आप डेटा का आकार पहले से जानते हैं, तो सरणियों (विशेष रूप से NumPy में) के लिए मेमोरी को पूर्व-आवंटित करने से प्रदर्शन में सुधार हो सकता है।

एक NumPy सारणी बनाना

NumPy का उपयोग करने के लिए, आपको सबसे पहले इसे इंस्टॉल करना होगा (pip install numpy) और फिर इसे आयात करें:

import numpy as np

एक बार आयात करने के बाद, आप इसका उपयोग करके एक NumPy सरणी बना सकते हैं array() समारोह:

arr = np.array([1, 2, 3, 4, 5])
print(arr) 

आप बहु-आयामी सारणी भी बना सकते हैं:

matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix)

यह हमें देगा:

[[1 2 3] [4 5 6] [7 8 9]]

इन बुनियादी तरीकों के अलावा हम ऐरे बना सकते हैं, NumPy हमें अन्य चतुर तरीके भी प्रदान करता है जिनसे हम ऐरे बना सकते हैं। जिनमें से एक है arange() तरीका। यह नियमित रूप से बढ़ते मूल्यों के साथ सारणी बनाता है:

arr = np.arange(10)
print(arr) 

एक और है linspace() विधि, जो निर्दिष्ट आरंभ और अंत मानों के बीच समान दूरी पर, निर्दिष्ट संख्या में तत्वों के साथ सरणियाँ बनाती है:

even_space = np.linspace(0, 1, 5)
print(even_space) 

तत्वों तक पहुँचना और संशोधित करना

NumPy सरणी में तत्वों तक पहुँचना और संशोधित करना सहज है:

print(arr[2]) arr[2] = 6
print(arr) 

बहु-आयामी सरणियों के लिए भी लगभग यही करना:

print(matrix[1, 2]) matrix[1, 2] = 10
print(matrix)

दूसरी पंक्ति में तत्व का मान बदल देगा (index 1) और तीसरा कॉलम (index 2):

[[1 2 3] [4 5 20] [7 8 9]]

किसी सारणी का आकार बदलना

NumPy सरणियों में हेरफेर और संचालन करने के लिए कई फ़ंक्शन और तरीके प्रदान करता है। उदाहरण के लिए, आप इसका उपयोग कर सकते हैं reshape() करने की विधि किसी सरणी का आकार बदलें. कहें कि हमारे पास एक सरल सरणी है:

import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
print("Original Array:")
print(arr) 

और हम इसे 3×4 मैट्रिक्स में दोबारा आकार देना चाहते हैं। आपको बस इसका उपयोग करना है reshape() वांछित आयामों वाली विधि को तर्क के रूप में पारित किया गया:


reshaped_arr = arr.reshape(3, 4)
print("Reshaped Array (3x4):")
print(reshaped_arr)

यह परिणाम होगा:

Reshaped Array (3x4):
[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]

मैट्रिक्स गुणन

RSI numpy.dot() विधि का प्रयोग किया जाता है मैट्रिक्स गुणन. यह दो सरणियों का डॉट उत्पाद लौटाता है। एक-आयामी सरणियों के लिए, यह है अंदरुनी उत्पाद सरणियों का. 2-आयामी सरणियों के लिए, यह इसके बराबर है मैट्रिक्स गुणन, और एनडी के लिए, यह एक है योग उत्पाद पहली सरणी के अंतिम अक्ष पर और दूसरी सरणी के दूसरे से अंतिम अक्ष पर।

आइए देखें कि यह कैसे काम करता है। सबसे पहले, आइए दो 1-डी सरणियों (वेक्टर का आंतरिक उत्पाद) के डॉट उत्पाद की गणना करें:

import numpy as np vec1 = np.array([1, 2, 3])
vec2 = np.array([4, 5, 6])
dot_product_1d = np.dot(vec1, vec2) print("Dot product of two 1-D arrays:")
print(dot_product_1d) 

यह परिणाम होगा:

Dot product of two 1-D arrays:
32

32 वास्तव में, दो सरणियों का आंतरिक उत्पाद है - (14 + 25 + 3*6). इसके बाद, हम दो 2-डी सरणियों का मैट्रिक्स गुणन कर सकते हैं:


mat1 = np.array([[1, 2], [3, 4]])
mat2 = np.array([[2, 0], [1, 3]])
matrix_product = np.dot(mat1, mat2) print("Matrix multiplication of two 2-D arrays:")
print(matrix_product) 

जो हमें देगा:

Matrix multiplication of two 2-D arrays:
[[ 4 6] [10 12]]

NumPy सरणियाँ Python की अंतर्निहित सूचियों से एक महत्वपूर्ण कदम हैं array मॉड्यूल, विशेष रूप से वैज्ञानिक और गणितीय गणनाओं के लिए। उनकी दक्षता, NumPy लाइब्रेरी द्वारा प्रदान की गई समृद्ध कार्यक्षमता के साथ मिलकर, उन्हें पायथन में संख्यात्मक संचालन करने के इच्छुक किसी भी व्यक्ति के लिए एक अनिवार्य उपकरण बनाती है।

निष्कर्ष

कंप्यूटर विज्ञान और प्रोग्रामिंग की आधारशिला ऐरे ने विभिन्न अनुप्रयोगों और डोमेन में बार-बार अपना महत्व साबित किया है। पायथन में, यह मौलिक डेटा संरचना, सूचियों जैसे अपने विभिन्न अवतारों के माध्यम से array मॉड्यूल, और शक्तिशाली NumPy सरणियाँ, डेवलपर्स को दक्षता, बहुमुखी प्रतिभा और सरलता का मिश्रण प्रदान करती हैं।

इस पूरे गाइड में, हमने एरे की मूलभूत अवधारणाओं से लेकर पायथन में उनके व्यावहारिक अनुप्रयोगों तक का सफर तय किया है। हमने देखा है कि कैसे एरे, अपनी मेमोरी-सन्निहित प्रकृति के साथ, तेजी से पहुंच समय प्रदान करते हैं, और कैसे पायथन की गतिशील सूचियाँ लचीलेपन की एक अतिरिक्त परत लाती हैं। हमने NumPy की विशेष दुनिया में भी प्रवेश किया है, जहां एरे संख्यात्मक गणना के लिए शक्तिशाली उपकरणों में बदल जाते हैं।

समय टिकट:

से अधिक स्टैकब्यूज