NumPy का numpy.char.find() फंक्शन स्ट्रिंग ऐरे के प्रत्येक एलिमेंट में सबस्ट्रिंग की पहली घटना का इंडेक्स लौटाता है। index() के विपरीत, सबस्ट्रिंग न मिलने पर यह ValueError के बजाय -1 लौटाता है।
सिंटैक्स
numpy.char.find(a, sub, start=0, end=None)
- a: इनपुट स्ट्रिंग ऐरे।
- sub: खोजा जाने वाला सबस्ट्रिंग।
- start: खोज शुरुआत इंडेक्स (डिफ़ॉल्ट 0)।
- end: खोज अंत इंडेक्स (डिफ़ॉल्ट: स्ट्रिंग अंत)।
- वापसी: इंडेक्स का इंट ऐरे, न मिलने पर -1।
उदाहरण: रेंज-लिमिटेड खोज
import numpy as np
# स्ट्रिंग ऐरे
arr = np.array(['KATIE', 'JOHN', 'CRATE', 'AmY', 'BRADley'])
print("ऐरे:\n", arr)
print("\nडेटा टाइप:", arr.dtype)
print("डायमेंशन्स:", arr.ndim)
print("आकार:", arr.shape)
print("एलिमेंट्स:", arr.size)
# 'AT' खोजें, केवल इंडेक्स 1 से 2 तक (start=1, end=3)
# स्लाइस [1:3] = इंडेक्स 1, 2
indices = np.char.find(arr, 'AT', start=1, end=3)
print("\n'AT' का इंडेक्स (रेंज 1-2):\n", indices)
आउटपुट
ऐरे:
['KATIE' 'JOHN' 'CRATE' 'AmY' 'BRADley']
डेटा टाइप:
विश्लेषण
| स्ट्रिंग | पूर्ण स्ट्रिंग | स्लाइस [1:3] | 'AT' मिला? | परिणाम |
|---|---|---|---|---|
| KATIE | K A T I E | A T | हां, इंडेक्स 1 | 1 |
| JOHN | J O H N | O H | नहीं | -1 |
| CRATE | C R A T E | R A | नहीं (AT इंडेक्स 2-3 पर) | -1 |
| AmY | A m Y | m Y | नहीं | -1 |
| BRADley | B R A D l e y | R A | नहीं (AT इंडेक्स 2-3 पर) | -1 |
find() बनाम index()
arr = np.array(['HELLO', 'WORLD', 'TEST'])
print("find('X'):", np.char.find(arr, 'X')) # [-1 -1 -1] - कोई एरर नहीं
print("index('X'):", end=" ")
try:
print(np.char.index(arr, 'X'))
except ValueError as e:
print("ValueError:", e)
केस-सेंसिटिव खोज
arr = np.array(['Hello', 'HELLO', 'hello'])
print("'LL':", np.char.find(arr, 'LL')) # [-1 2 -1]
print("'ll':", np.char.find(arr, 'll')) # [2 -1 2]
अंतिम घटना खोजें (rfind)
arr = np.array(['ABABAB', 'BABABA'])
print("पहला 'AB':", np.char.find(arr, 'AB')) # [0 1]
print("अंतिम 'AB':", np.char.rfind(arr, 'AB')) # [4 3]
संपूर्ण स्ट्रिंग खोज (नहीं सबस्ट्रिंग)
# पूर्ण स्ट्रिंग मैच के लिए == ऑपरेटर उपयोग करें
arr = np.array(['CAT', 'CATER', 'CAT'])
matches = (arr == 'CAT')
print("सटीक मैच:", matches) # [True False True]
print("इंडेक्स:", np.where(matches)[0]) # [0 2]
उपयोग के मामले
- बड़े टेक्स्ट डेटासेट्स में पैटर्न खोजना (वेक्टोराइज़्ड, तेज़)।
- लॉग/CSV पार्सिंग में डिलीमीटर पोजीशन।
- डेटा वैलिडेशन: आवश्यक सबस्ट्रिंग की उपस्थिति जांचना।
- फीचर इंजीनियरिंग: टेक्स्ट में कीवर्ड उपस्थिति एनकोड करना।
नोट
find() उत्पादन कोड के लिए सुरक्षित है क्योंकि यह अपवाद नहीं उठाता। index() तभी उपयोग करें जब आप निश्चित हों कि सबस्ट्रिंग मौजूद है।