English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

مفهوم NumPy Ndarray

أساسيات Ndarray لـ NumPy

أحد أكثر ميزات NumPy أهمية هو مصفوفة N-dimension ndarray، وهي مجموعة من البيانات المتنوعة من نفس النوع، وتستخدم المؤشرات التي تبدأ من 0 للوصول إلى عناصر المجموعة.
ndarray هو عنصر用于 تخزين مصفوفات متعددة الأبعاد من العناصر المتنوعة.
كل عنصر في ndarray يتم تخزينه في منطقة حجم تخزين متساوية في الذاكرة.
ndarray يتكون من ما يلي:

مؤشر إلى البيانات (قطعة من ذاكرة أو ملف محبط ذاكرة)نوع البيانات أو dtype، وهو يصف الحجم الثابت للقيم في المصفوفة.مجموعة من الأرقام تمثل شكل المصفوفة (shape)، وهي تمثل حجم كل محور.مجموعة من الأرقام الممتدة (stride)، حيث تشير الأرقام إلى عدد البايتات التي يجب "القفز" عبرها للوصول إلى العنصر التالي في البعد الحالي.

مفهوم الرئيسي لـ NumPy هو مصفوفات متعددة الأبعاد متساوية. إنه جدول من العناصر (عادةً أرقام)، جميعها من نفس النوع، ومؤشراتها هي مجموعات من الأرقام غير السلبية. في أبعاد NumPy يُدعى هذا العمود.

على سبيل المثال، نقطة الإحداثيات [1, 2, 1] في الفضاء الثلاثي الأبعاد لديها محور واحد. يحتوي هذا المحور على 3 عناصر، لذا نقول إن طول هذا المحور هو 3. في المثال الذي يظهر أدناه، يحتوي النطاق على 2 محور. طول المحور الأول هو 2، والطول الثاني هو 3.

[[1., 0., 0.],
[0., 1., 2.]]

يُدعى كلاس نطاق NumPy ndarray. يجب الانتباه إلى أن numpy.array يختلف عن كلاس array في مكتبة Python القياسية، حيث يتعامل array.array مع النطاقات الواحدة فقط ويقدم أقل وظائف. النطاق ndarray يحتوي على خصائص أكثر أهمية، وهي كالتالي:

ndarray.ndim - عدد المحاور (الأبعاد) للنطاق. في عالم Python، يُسمى عدد المحاور rank.ndarray.shape - أبعاد النطاق. هذا هو زوج من الأعداد الصحيحة، يمثل حجم النطاق في كل أبعاد. طول زوج shape هو rank أو عدد الأبعاد ndim.ndarray.size - عدد عناصر العنصر في النطاق. هذا يساوي حاصل جمع عناصر shape.ndarray.dtype - كائن يصف نوع العناصر في النطاق. يمكن استخدام نوع Python القياسي لإنشاء أو تحديد dtype. بالإضافة إلى ذلك، يقدم NumPy أنواعه الخاصة.ndarray.itemsize - حجم البايت لكل عنصر في النطاق. على سبيل المثال، النطاق الذي يحتوي على عناصر من نوع float64 له itemsize 8 (= 64/8).ndarray.data - يحتوي هذا الب缓冲 على عناصر العنصر الفعلي للنطاق. عادة، لا نحتاج إلى استخدام هذا المفتاح لأننا سنستخدم الوصول عن طريق المؤشر إلى عناصر النطاق.

لننظر في مثال محدد

>>> import numpy as np
>>> a = np.arange(15).reshape(3, 5)
>>> a
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9],
       [10, 11, 12, 13, 14]]
>>> a.shape
(3, 5)
>>> a.ndim
2
>>> a.dtype.name
'int64'
>>> a.itemsize
8
>>> a.size
15
>>> type(a)

لإنشاء ndarray فقط تحتاج إلى استدعاء دالة array الخاصة بـ NumPy:

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
شرح المعلمات:

object - مجموعة أو سلسلة مدمجةdtype - نوع العناصر في المجموعة، اختياريcopy - هل يجب نسخ العنصر أم لا، اختياريorder - نمط إنشاء المجموعة، C لاتجاه الصف، F لاتجاه العمود، A لأي اتجاه (الافتراضي)subok - يعود دائمًا إلى مجموعة تتناسب مع نوع الأساسndmin - تحديد أبعاد الأدنى للجذور المولدة

مثال Ndarray

سنستعرض بعض الأمثلة لفهم استخدام Ndarray بشكل أفضل.

1. مجموعة أحادية الأبعاد
>>> import numpy as np
>>> a = np.array([1,2,3,4,5])
>>> print(a)
[1 2 3 4 5]
2. مجموعة متعددة الأبعاد
>>> import numpy as np
>>> a = np.array([[1,2,3],[4,5,6],[7,8,9]])
>>> print(a)
[[1 2 3]]
 [4 5 6]
 [7 8 9]
3. تحديد أبعاد المجموعة
>>> import numpy as np
>>> a = np.array([1,2,3,4,5], ndmin = 3)
>>> print(a)
[[[1 2 3 4 5]]]
4. تحديد نوع العناصر في المجموعة
>>> import numpy as np
>>> a = np.array([1,2,3,4,5,6], dtype = float32)
>>> print(a)
[1. 2. 3. 4. 5. 6.]