कोर्स
जैसे-जैसे डेटा साइंस विकसित हो रहा है, आम लाइब्रेरीज़ में कुछ बदलाव ज़रूरी हो जाते हैं, और इस बार NumPy लाइब्रेरी का अपडेट संस्करण 2.0 में हो रहा है। यह बड़ा अपडेट जून 2024 में जारी किया गया, और यह लोकप्रिय Python लाइब्रेरी में कई नए फीचर्स और सुधार लाता है।
इतने बड़े स्तर के बदलावों के साथ, कुछ ऐसे क्षेत्र ज़रूर होंगे जिन पर ध्यान देना होगा और जहाँ आपको अपने मौजूदा कोड में समायोजन करने की आवश्यकता पड़ सकती है।
इस लेख में, हम साझा करेंगे कि NumPy 2.0 में क्या शामिल है, किए गए मुख्य बदलाव क्या हैं, और आप NumPy 2.0 में कैसे माइग्रेट कर सकते हैं।
NumPy 2.0 का परिचय
वर्षों की फीडबैक और तकनीकी प्रगति पर आधारित, NumPy 2.0 एक महत्वाकांक्षी अपग्रेड है, जो पिछले कुछ वर्षों के कई अपडेट्स से अलग है।
अपने रिलीज़ ब्लॉग पोस्ट में, उन्होंने अपडेटेड API, बेहतर स्केलर प्रमोशन नियम, नया DType API और नया स्ट्रिंग DType, संगतता में सुधार, और API मानकों का संरेखण पेश किया। इन प्रयासों के ज़रिए उपयोगकर्ताओं को प्रदर्शन और प्रलेखन में उल्लेखनीय सुधार दिखाई देंगे।
हालाँकि, लाइब्रेरी में इतने बड़े बदलाव के साथ, यह नया रिलीज़ कुछ व्यवधान भी लाता है। उदाहरण के लिए, नया API और ABI बदलाव बैकवर्ड-कॉम्पैटिबल नहीं हैं।
मुख्य नए फीचर्स
रिलीज़ नोट्स के अनुसार, NumPy 2.0 में महत्वपूर्ण बदलाव आए हैं, और ये कुछ उल्लेखनीय बातें हैं:
API और ABI बदलाव
इस अपडेट में API और ABI (Application Binary Interface) में कई क्लीनअप बदलाव किए गए हैं।
NEP (NumPy Enhancement Proposal) 52 में बताए गए इस नए अपडेट के साथ, NumPy एक अधिक सुव्यवस्थित, साफ़-सुथरे और सरल API के लिए अपनी सामान्य बैकवर्ड संगतता की नीति से हट रहा है।
यहाँ कुछ प्रमुख बदलाव हैं:
- पब्लिक और प्राइवेट API का विभाजन: मॉड्यूल संरचना का उपयोग करते हुए, अब Python के लिए NumPy API में पब्लिक और प्राइवेट API के बीच स्पष्ट विभाजन है।
- नेमस्पेस क्लीनअप: फ़ंक्शंस को सरल बनाया गया है ताकि NumPy सीखना आसान हो सके। अधिक जानकारी के लिए पूरी हटाई गई सूची देखें.
- निश फ़ंक्शनैलिटी को डिप्रिकेट करना: कई गैर-सिफारिशी फ़ंक्शंस और उपनामों (aliases) को हटा दिया गया है।
- नया कस्टम टाइप: C API के लिए, कस्टम DType बनाने हेतु नया पब्लिक API जारी किया गया।
ABI बदलावों के संदर्भ में, नए रिलीज़ के साथ ब्रेकिंग परिवर्तन होंगे। इसका असर उन पैकेजों के बाइनरीज़ पर पड़ेगा जो NumPy C API का उपयोग करते हैं।
जो भी इसे किसी भी पिछले NumPy 1.xx रिलीज़ के खिलाफ बिल्ड करेगा, वह NumPy 2.0 के साथ काम नहीं करेगा। मैं उनकी सिफारिश के अनुसार माइग्रेशन कैसे किया जा सकता है, इस पर आगे और साझा करूँगा। आपको ImportError संदेश मिलेगा, जो बाइनरी असंगति (incompatibility) की ओर संकेत करता है।
नया DType API और String DType
जैसा कि NEP 41 में प्रस्तावित है, यह 2.0 अपडेट यूज़र-परिभाषित कस्टम डेटा टाइप्स को इम्प्लीमेंट करने के लिए एक नया API जारी करता है, जो StringDType डेटा टाइप का उपयोग करता है। इस नए API में वैरिएबल-लंबाई स्ट्रिंग डेटा टाइप्स के लिए नैटिव सपोर्ट शामिल है, जिसकी NumPy उपयोगकर्ता लंबे समय से मांग कर रहे थे।
स्केलर प्रमोशन नियम
शुरुआत में NEP 50 में प्रस्तावित, NumPy में स्केलर प्रमोशन नियमों को भी अपडेट किया गया है ताकि उपयोगकर्ताओं को अप्रत्याशित परिणाम न मिलें। पहले, प्रमोशन अक्सर केवल उनके DTypes के बजाय इनपुट एरेज़ के डेटा मानों पर निर्भर करता था, जो भ्रमित कर सकता है।
नए प्रमोशन पाथ्स के लिए, नीचे दी गई छवि देखें:

स्रोत: NumPy DType प्रिसीजन और प्रमोशन
प्रदर्शन में सुधार
यह नया रिलीज़ कुछ प्रदर्शन सुधार भी लाता है।
ये कुछ मुख्य क्षेत्र हैं जिनमें सुधार किया गया:
- तेज़ सॉर्टिंग फ़ंक्शंस
- macOS Accelerate के ज़रिए macOS पर रैखिक बीजगणित (linear algebra) ऑपरेशंस के प्रदर्शन में सुधार
Windows संगतता
Windows उपयोगकर्ताओं के लिए बेहतर अनुभव देने हेतु, NumPy टीम ने नए रिलीज़ के साथ कई संगतता समस्याओं को भी ठीक किया है।
उदाहरण के लिए, उन्होंने Windows पर डिफ़ॉल्ट इन्टिजर टाइप को int32 के बजाय int64 कर दिया है, ताकि अन्य OS प्लेटफ़ॉर्म्स के डिफ़ॉल्ट व्यवहार से मेल खाए।
डॉक्यूमेंटेशन और उपयोगिता में सुधार
NumPy के मॉड्यूल स्ट्रक्चर में अधिक दस्तावेज़ जोड़े गए, और रेफ़रेंस गाइड नेविगेशन में सुधार हुआ। स्रोत से बिल्ड करने की डॉक्यूमेंटेशन भी पूरी तरह से पुनर्लिखी गई।
NumPy 2.0 में कैसे माइग्रेट करें
NumPy 2.0 में अपडेट करना
सबसे पहले, NumPy के इस नए संस्करण के साथ शुरू करने के लिए, आपको अपनी मौजूदा स्थापना को नवीनतम संस्करण में अपग्रेड करना होगा।
ऐसा करने के लिए, बस इस कमांड में अपग्रेड विकल्प का उपयोग करें:
pip install -U numpy
वैकल्पिक रूप से, आप यह भी उपयोग कर सकते हैं:
pip install –upgrade numpy
यह अपग्रेड विकल्प निर्दिष्ट पैकेज(ज़) को नवीनतम संस्करण में अपडेट करता है, जो इस मामले में NumPy है। कमांड चलाने के बाद, पैकेज इंस्टॉल होने दें जब तक कि आपको यह संदेश न दिखे: “Successfully installed numpy-2.0.0”.
यदि आप नवीनतम के बजाय किसी विशेष संस्करण में अपडेट करना चाहते हैं, तो आप इस कमांड का उपयोग कर सकते हैं:
pip install numpy==2.0.0
यह सुनिश्चित करता है कि आप सही संस्करण इंस्टॉल कर रहे हैं, जो इस मामले में 2.0.0 है।
दूसरी जाँच करने के लिए, यह कमांड चलाएँ:
pip list
यह आपके सभी इंस्टॉल किए गए पैकेज/लाइब्रेरीज़ और उनके संबंधित संस्करणों को सूचीबद्ध कर देगा। आउटपुट में जाँचें कि numpy लाइब्रेरी संस्करण 2.0.0 में अपडेट हुई है या नहीं।
इंस्टॉल करने की प्रक्रिया में, आपको कुछ डिपेंडेंसी संदेश लाल रंग में भी दिखाई दे सकते हैं। इसका अर्थ है कि नवीनतम संस्करण में अपडेट करने के बाद आपके कोड में कुछ संभावित समस्याएँ हो सकती हैं। आप तब प्रभावित विशिष्ट क्षेत्रों और लाइब्रेरीज़ की अलग-अलग जाँच कर सकते हैं।
NumPy 2.0 में अपग्रेड करना अस्थायी रूप से विघटनकारी हो सकता है, इसलिए बेहतर है कि आप सुनिश्चित करें कि आपके स्क्रिप्ट्स और भविष्य के पाइपलाइनों में सब कुछ अच्छी तरह माइग्रेट हो गया है।
पूरे मार्गदर्शन के लिए, कृपया डेवलपर्स द्वारा जारी आधिकारिक NumPy 2.0 माइग्रेशन गाइड देखें।
माइग्रेट करते समय ध्यान देने के लिए ये मुख्य क्षेत्र हैं:
NumPy डेटा टाइप प्रमोशन बदलावों को संबोधित करना
कई व्यवहारिक बदलावों और अपेक्षित डेटा टाइप बदलावों पर पूर्ण गाइड के लिए, NEP 50 के इस टेबल को देखें।
मुख्य बैकवर्ड संगतता समस्या आपके स्केलर्स की प्रिसीजन से संबंधित है।
उदाहरण के लिए, जब ऐसा ऑपरेशन चलाया जाता है:
np.float32(6) + 6.
यह float64 के बजाय float32 डेटा टाइप रिटर्न करता है, जो बैकवर्ड संगतता को कठिन बना देता है। इस समस्या का समाधान करने के लिए, उनकी सिफारिश यह है:
डेटा टाइप्स को स्पष्ट रूप से कास्ट करें: अपना डेटा टाइप स्पष्ट करने के लिए int(), float(), या numpy_scalar.item() स्केलर्स का उपयोग करें।
परिवर्तनों को ट्रैक करने के लिए चेतावनियाँ सक्षम करें: एरर ट्रेसबैक के माध्यम से बदलाव खोजने के लिए चेतावनियों का उपयोग करें।
नेमस्पेस बदलावों को संबोधित करना
इस 2.0 अपडेट के साथ, कई नेमस्पेस हटाए जाने से आपका कोड प्रभावित हो सकता है। NumPy टीम ये कदम सुझाती है:
- यहाँ डिप्रिकेटेड उपनाम और माइग्रेशन गाइडलाइन्स जाँचें।
- डिप्रिकेटेड उपनामों को बैकवर्ड-कॉम्पैटिबल विकल्प से बदलें।
- उन प्राइवेट मेंबर्स की जाँच करें जो 2.0 अपडेट में हटा दिए गए।
- यदि प्राइवेट मेंबर्स का उपयोग किया गया था, तो मौजूदा पब्लिक API का उपयोग करें।
ABI ब्रेकिज को संबोधित करना
यदि आप ऐसा Python पैकेज उपयोग कर रहे हैं जो NumPy के C API पर निर्भर है, तो आपको ABI में आने वाले ब्रेक्स को संबोधित करना होगा। डेवलपर्स ने ऐसी स्थितियों के लिए असंगति को दूर करने हेतु कुछ NumPy 2.0-विशिष्ट सलाह जारी की हैं:
Python कोड अपडेट करने के लिए Ruff प्लगइन
आपकी माइग्रेशन प्रक्रिया में सहायता के लिए, आप Ruff प्लगइन का उपयोग कर सकते हैं, जिसमें Ruff की समर्पित रूल NPY201 शामिल है।
Ruff, PyPI पर ruff नाम से उपलब्ध है। Ruff इंस्टॉल करने के लिए, कमांड लाइन में यह दर्ज करें:
pip install ruff
अधिक विवरण के लिए, पूरी Ruff इंस्टॉलेशन गाइड देखें।
सुनिश्चित करें कि आप pyproject.toml में NP201 रूल निर्दिष्ट करें:
[tool.ruff.lint]
select = ["NPY201"]
वैकल्पिक रूप से, आप कमांड लाइन का उपयोग करके भी NPY201 रूल निर्दिष्ट कर सकते हैं:
$ ruff check path/to/code/ --select NPY201
समुदाय का योगदान
NumPy 2.0 रिलीज़ इसके समुदाय के प्रयासों का परिणाम है। समुदाय द्वारा सुझाए गए कई NEPs के माध्यम से, कई लंबे समय से प्रतीक्षित प्रस्ताव अंततः लागू किए गए हैं।
उत्साही डेवलपर्स, शोधकर्ता, और शौक़ीन सभी ने इस ऐतिहासिक रिलीज़ में अहम भूमिका निभाई है—अपनी विशेषज्ञता साझा करके, फीडबैक देकर, और कोड सुधार सबमिट करके—जिसने NumPy 2.0 को महत्वपूर्ण रूप से आकार दिया है।
निष्कर्ष
प्रदर्शन, संगतता, और उपयोगिता में कई नए फीचर्स और सुधारों के साथ NumPy 2.0, Python प्रोग्रामिंग भाषा के लिए एक बड़ा कदम है। यदि आपको माइग्रेशन में कोई समस्या या त्रुटि का सामना करना पड़ रहा है, तो बेहतर होगा कि आप सीधे NumPy टीम से संपर्क करें।
आशा है कि यह लेख NumPy के इस रोमांचक अपडेट में हुए मुख्य बदलावों को समझने में सहायक रहा होगा। और गहराई से पढ़ने के लिए हमारा NumPy ट्यूटोरियल ज़रूर पढ़ें।
यदि आप NumPy में नए हैं और अधिक अन्वेषण करना चाहते हैं, तो हमारा Introduction to NumPy कोर्स आज़माएँ या यह NumPy लाइव कोड-अलॉन्ग ट्रेनिंग देखें।
मैं ऑस्टिन हूँ—एक ब्लॉगर और टेक राइटर, जिसके पास स्वास्थ्य सेवा क्षेत्र में डेटा वैज्ञानिक और डेटा विश्लेषक के रूप में वर्षों का अनुभव है। जीवविज्ञान की पृष्ठभूमि से अपनी टेक यात्रा शुरू करने के बाद, अब मैं अपने टेक ब्लॉग के माध्यम से दूसरों को भी यही बदलाव करने में मदद करता हूँ। प्रौद्योगिकी के प्रति मेरे जुनून ने मुझे दर्जनों SaaS कंपनियों के लिए लिखने के लिए प्रेरित किया है, जहाँ मैं अपनी अनुभूतियाँ साझा करता हूँ और दूसरों को प्रेरित करता हूँ।
