NumPy: عمليات السلاسل النصية
آخر تحديث: 2026-08-26
1. ما ستتعلمه
- ❶ دوال السلاسل النصية المتجهة:
np.char.upper،np.char.lower، إلخ. - ❷ مطابقة الأنماط باستخدام
np.char.find،np.char.count - ❸ ربط السلاسل وتقسيمها والحشو
- ❹ متى تستخدم سلاسل NumPy ومتى تستخدم سلاسل Python
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) لا تزال مدعومة لكن البدائل الحديثة موصى بها.
📖 ملخص
- وحدة
np.charتوفر عمليات سلاسل متجهة: upper، lower، capitalize، title - مطابقة الأنماط:
find،count،startswith،endswith - الربط، التقسيم، الإزالة، الحشو، الاستبدال — كلها متجهة
- مصفوفات السلاسل لها dtype ثابت العرض (
U{n}) — الذاكرة مخصصة مسبقًا - للعمليات المعقدة على السلاسل، فكر في استخدام أداة الوصول
.strفي Pandas
📝 تمارين
-
مبتدئ (الصعوبة ⭐): أنشئ مصفوفة من 5 أسماء. طبق
upperوlowerوcapitalizeوtitleعلى جميع العناصر. -
متوسط (الصعوبة ⭐⭐): أنشئ مصفوفة من عناوين البريد الإلكتروني. استخدم
np.char.findللعثور على موقع '@' في كل بريد. ثم استخدمnp.char.splitلاستخراج جزء النطاق. -
متقدم (الصعوبة ⭐⭐⭐): أنشئ مصفوفة من 1000 سلسلة عشوائية. قارن أداء
np.char.upperضد قائمة فهم Python. سجل عامل التسريع.