NumPy: عمليات السلاسل النصية

آخر تحديث: 2026-08-26

1. ما ستتعلمه




2. المفاهيم الأساسية

PYTHON
import numpy as np

names = np.array(['alice', 'bob', 'charlie'])

# عمليات السلاسل النصية المتجهة
print(np.char.upper(names))     # ['ALICE' 'BOB' 'CHARLIE']
print(np.char.capitalize(names))  # ['Alice' 'Bob' 'Charlie']
print(np.char.title(names))     # ['Alice' 'Bob' 'Charlie']

---
## 3. مطابقة الأنماط
print(np.char.find(names, 'li'))  # [ 2 -1  3]
print(np.char.count(names, 'e'))  # [1 0 1]

---
## 4. الربط والتقسيم
print(np.char.join('-', names))  # ['a-l-i-c-e' 'b-o-b' 'c-h-a-r-l-i-e']
print(np.char.split(names, 'i'))  # [['al', 'ce'], ['bob'], ['charl', 'e']]
TEXT 📖 للعرض فقط
> **المخرجات:** قم بتشغيل NumPy 2.x في بيئة Python المحلية لديك لرؤية مخرجات ndarray. خادم Piston لا يحتوي على NumPy مثبتًا مسبقًا — قم بتثبيته محليًا (`pip install numpy`) وقارن. قد تختلف القيم الفعلية حسب إصدار NumPy والبذرة العشوائية.

▶ مثال: عمليات السلاسل الأساسية (الصعوبة ⭐)

PYTHON
import numpy as np

names = np.array(['alice', 'bob', 'charlie', 'diana'])

print("Upper:", np.char.upper(names))
print("Lower:", np.char.lower(names))
print("Capitalize:", np.char.capitalize(names))
print("Title:", np.char.title(names))
print("Swapcase:", np.char.swapcase(names))

المخرجات:

TEXT 📖 للعرض فقط
Upper:
Lower:
Capitalize:
Title:
Swapcase:

المخرجات:

TEXT 📖 للعرض فقط
Upper: ['ALICE' 'BOB' 'CHARLIE' 'DIANA']
Lower: ['alice' 'bob' 'charlie' 'diana']
Capitalize: ['Alice' 'Bob' 'Charlie' 'Diana']
Title: ['Alice' 'Bob' 'Charlie' 'Diana']
Swapcase: ['ALICE' 'BOB' 'CHARLIE' 'DIANA']

▶ مثال: مطابقة الأنماط في السلاسل النصية (الصعوبة ⭐⭐)

PYTHON
import numpy as np

emails = np.array(['alice@work.com', 'bob@home.org', 'charlie@school.edu'])

---
## 5. البحث عن موقع '@'
at_pos = np.char.find(emails, '@')
print("@ positions:", at_pos)

---
## 6. عد تكرارات 'e'
e_count = np.char.count(emails, 'e')
print("'e' counts:", e_count)

---
## 7. التحقق من البداية/النهاية
print("Starts with 'a':", np.char.startswith(emails, 'a'))
print("Ends with '.edu':", np.char.endswith(emails, '.edu'))

المخرجات:

TEXT 📖 للعرض فقط
@ positions:
'e
Starts with 
Ends with 

المخرجات:

TEXT 📖 للعرض فقط
@ positions: [5 3 7]
'e' counts: [1 1 2]
Starts with 'a': [ True False False]
Ends with '.edu': [False False  True]

▶ مثال: ربط السلاسل والحشو (الصعوبة ⭐⭐)

PYTHON
import numpy as np

words = np.array(['hello', 'world', 'numpy'])

---
## 8. ربط الأحرف بفاصل
print("Join:", np.char.join('-', words))

---
## 9. حشو السلاسل إلى عرض ثابت
print("Pad center:\n", np.char.center(words, 10, fillchar='='))
print("Pad left:\n", np.char.ljust(words, 10, fillchar='.'))
print("Pad right:\n", np.char.rjust(words, 10, fillchar='.'))

---
## 10. إزالة المسافات البيضاء
messy = np.array(['  alice  ', '  bob  ', '  charlie  '])
print("Strip:", np.char.strip(messy))

المخرجات:

TEXT 📖 للعرض فقط
Join:
Pad center:\n
Pad left:\n
Pad right:\n
Strip:

المخرجات:

TEXT 📖 للعرض فقط
Join: ['h-e-l-l-o' 'w-o-r-l-d' 'n-u-m-p-y']
Pad center:
 ['==hello===' '==world====' '==numpy====']
Pad left:
 ['hello.....' 'world.....' 'numpy.....']
Pad right:
 ['.....hello' '.....world' '.....numpy']
Strip: ['alice' 'bob' 'charlie']

س هل عمليات السلاسل في NumPy أسرع من حلقات Python؟
ج نعم، للمصفوفات الكبيرة — التوجيه على مستوى C أسرع بكثير من التكرار عبر سلاسل Python. لكن للسلاسل المفردة، دوال Python الأصلية أبسط.
س ما هو نوع البيانات (dtype) لمصفوفات السلاسل؟
ج np.str_ (أو 'U' لـ Unicode). مصفوفات السلاسل لها طول أقصى ثابت، يحدد استخدام الذاكرة. السلاسل متغيرة الطول تستخدم dtype من نوع object.
س هل يمكنني استخدام التعبيرات المنتظمة (regex)؟
ج NumPy لا تدعم التعبيرات المنتظمة بشكل أصلي. استخدم np.vectorize(re.search) أو Pandas .str.contains() لعمليات regex على المصفوفات.


❓ أسئلة شائعة

س ما هو أهم شيء يجب تذكره؟
ج عمليات NumPy متجهة — تجنب حلقات Python لأداء أفضل.
س أين يمكنني معرفة المزيد؟
ج اطّلع على وثائق NumPy الرسمية على numpy.org للمراجع التفصيلية والمواضيع المتقدمة.
س هل يعمل هذا مع NumPy 2.x؟
ج نعم — جميع الأمثلة متوافقة مع NumPy 2.x. بعض الواجهات القديمة (مثل np.random.seed) لا تزال مدعومة لكن البدائل الحديثة موصى بها.

📖 ملخص



📝 تمارين

  1. مبتدئ (الصعوبة ⭐): أنشئ مصفوفة من 5 أسماء. طبق upper وlower وcapitalize وtitle على جميع العناصر.

  2. متوسط (الصعوبة ⭐⭐): أنشئ مصفوفة من عناوين البريد الإلكتروني. استخدم np.char.find للعثور على موقع '@' في كل بريد. ثم استخدم np.char.split لاستخراج جزء النطاق.

  3. متقدم (الصعوبة ⭐⭐⭐): أنشئ مصفوفة من 1000 سلسلة عشوائية. قارن أداء np.char.upper ضد قائمة فهم Python. سجل عامل التسريع.

Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%