बूलियन मास्किंग और फैंसी इंडेक्सिंग
बूलियन शर्तों से ऐरे फ़िल्टर कीजिए और पूर्णांक इंडेक्स ऐरे का उपयोग करके मनचाहे तत्व चुनिए।
बूलियन मास्किंग और फैंसी इंडेक्सिंग, CoddyKit पर Pandas & NumPy Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Pandas & NumPy Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Pandas & NumPy Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
बूलियन arrays को mask के रूप में उपयोग करना
बूलियन mask True/False मानों वाला array होता है। इसे index के रूप में उपयोग करने पर केवल True से चिह्नित elements बचते हैं—यह filtering का आपका मुख्य साधन है।
import numpy as np
a = np.array([5, 3, 8, 1, 9, 2, 7])
mask = a > 4
print(mask) # [ True False True False True False True]
print(a[mask]) # [5 8 9 7]संयुक्त बूलियन conditions
& (and), | (or) और ~ (not) से संयुक्त filters बनाएँ। हर condition को हमेशा कोष्ठक में रखें, वरना precedence आपको भ्रमित कर सकती है।
import numpy as np
a = np.array([3, 7, 2, 9, 1, 6, 4, 8])
# Elements between 4 and 8 inclusive
result = a[(a >= 4) & (a <= 8)]
print(result) # [7 6 4 8]
# Elements less than 3 or greater than 7
result2 = a[(a < 3) | (a > 7)]
print(result2) # [2 9 1 8]बूलियन indexing से मानों में बदलाव
आप सीधे बूलियन selection में मान assign कर सकते हैं, जिससे केवल matching elements वहीं बदलते हैं। Outliers की सीमा तय करने या missing values भरने का यह सबसे तेज़ तरीका है।
import numpy as np
a = np.array([5, -3, 8, -1, 2, -7])
a[a < 0] = 0 # zero out negatives in-place
print(a) # [5 0 8 0 2 0]
# Cap values above 6
a[a > 6] = 6
print(a) # [5 0 6 0 2 0]2-D arrays पर बूलियन masking
2-D array पर बूलियन mask हमेशा एक flat 1-D result लौटाता है। पूरी rows चुनने के लिए एक column से 1-D mask बनाएँ और axis 0 के साथ index करें।
import numpy as np
m = np.array([[1, 5], [3, 2], [8, 4], [6, 7]])
# Select rows where first column > 4
mask = m[:, 0] > 4
print(mask) # [False False True True]
print(m[mask]) # [[8 4] [6 7]]Masks के साथ np.where
np.where(condition, x, y) array की shape बनाए रखता है: जहाँ condition सही होती है वहाँ x और अन्य स्थानों पर y चुनता है। Flatten किए बिना values बदलने के लिए यह बिल्कुल उपयुक्त है।
import numpy as np
a = np.array([3, -1, 5, -2, 4])
result = np.where(a >= 0, a, 0) # keep positives, replace negatives
print(result) # [3 0 5 0 4]
# Recode: above-average -> 'high', else -> 'low'
labels = np.where(a >= a.mean(), 'high', 'low')
print(labels) # ['high' 'low' 'high' 'low' 'high']विशेष indexing की मूल बातें
विशेष indexing का अर्थ है specific elements पाने के लिए integer indices वाला array देना—किसी भी क्रम में और दोहराव के साथ। यह हमेशा एक copy लौटाता है।
import numpy as np
a = np.array([10, 20, 30, 40, 50])
idx = np.array([4, 1, 1, 3])
print(a[idx]) # [50 20 20 40]
# 2D index shape -> 2D output
idx2d = np.array([[0, 2], [4, 1]])
print(a[idx2d]) # [[10 30] [50 20]]2-D arrays पर विशेष indexing
2-D array पर जोड़ी गई index arrays अलग-अलग बिंदु चुनती हैं: m[rows, cols] प्रत्येक (row, col) जोड़ी का element लेता है, पूरी sub-matrix नहीं।
import numpy as np
m = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# Select elements at (0,2), (1,0), (2,1)
rows = [0, 1, 2]
cols = [2, 0, 1]
print(m[rows, cols]) # [3 4 8]Row-Column grid selection के लिए np.ix_
np.ix_ आपके द्वारा दी गई rows और columns के हर combination पर sub-matrix चुनता है—जब आपको केवल जोड़ियाँ नहीं, बल्कि कई rows AND कई columns चाहिए हों, तब यह उपयोगी है।
import numpy as np
m = np.arange(16).reshape(4, 4)
print(m)
# Select rows 0,2 and columns 1,3
ix = np.ix_([0, 2], [1, 3])
print(m[ix])
# [[ 1 3]
# [ 9 11]]np.nonzero() और np.argwhere()
np.nonzero non-zero (या True) elements के indices को प्रत्येक axis के लिए एक tuple के रूप में लौटाता है। np.argwhere वही जानकारी आसानी से पढ़ी जा सकने वाली rows के रूप में stacked लौटाता है।
import numpy as np
a = np.array([0, 3, 0, 5, 0, 7])
print(np.nonzero(a)) # (array([1, 3, 5]),)
print(np.argwhere(a > 0)) # [[1] [3] [5]]बूलियन और विशेष indexing को मिलाना
दोनों को मिलाएँ: rows को filter करने के लिए बूलियन mask का उपयोग करें, फिर columns का क्रम बदलने के लिए विशेष indexing करें। साथ में ये एक साफ़ चरण में data को filter और rearrange कर देते हैं।
import numpy as np
data = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
scores = np.array([0.9, 0.3, 0.8])
# Keep high-scoring rows, reorder columns to [2, 0, 1]
high = data[scores > 0.5]
reordered = high[:, [2, 0, 1]]
print(reordered)प्रदर्शन: बूलियन बनाम विशेष indexing
बूलियन और विशेष indexing दोनों copies लौटाते हैं। Filtering के लिए बूलियन mask आमतौर पर सबसे आसानी से समझ आने वाला और पर्याप्त तेज़ विकल्प है—एक बेहतरीन default।
import numpy as np
a = np.random.rand(1_000_000)
# Boolean mask -- readable and fast
result = a[a > 0.5]
print('filtered size:', result.size) # ~500000
# Equivalent with np.where + fancy index
idx = np.where(a > 0.5)[0]
result2 = a[idx]
print('same result:', np.array_equal(result, result2))त्वरित जाँच
इस lesson में बताए गए बूलियन masking और विशेष indexing की अपनी समझ जाँचें।
Lesson का पुनरावलोकन
बहुत अच्छा! बूलियन masks filter और copy करते हैं, np.where array की shape बनाए रखता है, और विशेष indexing आपके बताए हुए किसी भी element को चुन सकती है। अगला विषय: Pandas Series!
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “बूलियन मास्किंग और फैंसी इंडेक्सिंग” पाठ निःशुल्क है?
हाँ—“बूलियन मास्किंग और फैंसी इंडेक्सिंग” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Pandas & NumPy Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Pandas & NumPy Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“बूलियन मास्किंग और फैंसी इंडेक्सिंग” में मैं क्या सीखूँगा?
बूलियन शर्तों से ऐरे फ़िल्टर कीजिए और पूर्णांक इंडेक्स ऐरे का उपयोग करके मनचाहे तत्व चुनिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Pandas & NumPy Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Pandas & NumPy Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Pandas & NumPy Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“बूलियन मास्किंग और फैंसी इंडेक्सिंग” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Pandas & NumPy Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Pandas & NumPy Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- यूनिवर्सल फ़ंक्शन (ufuncs)
- एग्रीगेशन फ़ंक्शन
- ब्रॉडकास्टिंग के नियम
- बूलियन मास्किंग और फैंसी इंडेक्सिंग