English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
شرح خصائص نصيبة NumPy ومثال
يُسمى عدد أبعاد النصيبة في NumPy برتبة (rank)، أي أبعاد النصيبة، رتبة النصيبة الواحدة هي 1، رتبة النصيبة الثنائية هي 2، وهكذا.
في NumPy، كل نصيبة خطية تُسمى محور (axis)، axis=0 يعني العمل على المحور 0، أي العمل على كل عمود؛ axis=1 يعني العمل على المحور 1، أي العمل على كل صف.
على سبيل المثال، النصيبة الثنائية هي مثل نصيبتين خطيتين، حيث يكون كل عنصر في النصيبة الأولى نصيبة خطية.
لذا فإن البنية الخطية هي محور (axis) في NumPy، وال محور الأول يمثل البنية الأساسية للنصيبة، وال محور الثاني يمثل النصيبة في النصيبة الأساسية. وعدد المحاور - الرتبة، هو عدد الأبعاد للنصيبة.
من المهم جدًا في NumPy بعض خصائص العناصر ndarray
أنواع البيانات التي يدعمها NumPy أكثر أنواع البيانات المدمجة في Pythonهناك الكثير، يمكن مقارنته بشكل أساسي مع أنواع البيانات في لغة C، بعض الأنواع تتطابق مع الأنواع المدمجة في Python. يعرض الجدول أدناه الأنواع الأساسية التي يدعمها NumPy.
ndarray.ndim - الرتبة، أي عدد المحاور أو أعداد الأبعاد.ndarray.shape - أبعاد المجموعة، بالنسبة للصفوف، n صف m عمود.ndarray.size - عدد العناصر في العناصر، يساوي قيمة n*m في .shape.ndarray.dtype - نوع العناصر في ndarray.ndarray.itemsize - حجم كل عنصر في ndarray، بالبites.ndarray.flags - معلومات ذاكرة ndarray.ndarray.real - الجزء الحقيقي لعناصر ndarray.ndarray.imag - الجزء المجرد من عناصر ndarray.ndarray.data - يحتوي على منطقة التخزين للنصائح، حيث يتم الحصول على العناصر من خلال معادلة النصائح، لذلك لا تحتاج إلى استخدام هذه الخاصية عادة.
ndarray.ndim تستخدم لتحديد عدد أبعاد المجموعة، يساوي الرتبة.
>>> import numpy as np >>> a = np.arange(24) >>> print(a.ndim) 1 # a الآن يمتلك بعدًا واحدًا >>> b = a.reshape(2,4,3) >>> print(b.ndim) 3 # b الآن يمتلك ثلاثة أبعاد
ndarray.shape تمثل أبعاد المجموعة، وتعيد مجموعة من التuple، طول هذه المجموعة هو عدد الأبعاد، أي الخاصية ndim (الرتبة). على سبيل المثال، مجموعة ثنائية الأبعاد، تمثل "عدد الصف" و "عدد العمود".
يمكن أيضًا استخدام ndarray.shape لتعديل حجم المجموعة.
>>> import numpy as np >>> a = np.array([[1,2,3,4,5,6],[4,5,6,7,8,9]]) >>> print(a.shape) (2, 6) >>> a.shape = (6,2) >>> print(a) [[1 2] [3 4] [5 6] [4 5] [6 7] [8 9]
في نفس الوقت، يقدم NumPy أيضًا دالة reshape لتحديد حجم المجموعة، مثل المثال التالي:
>>> import numpy as np >>> a = np.array([[1,2,3,4,5,6],[4,5,6,7,8,9]]) >>> b = a.reshape(6, 2) >>> print(b) [[1 2] [3 4] [5 6] [4 5] [6 7] [8 9]
ndarray.size هي عدد العناصر في البنية. هي نفسها لـ np.prod(a.shape)، أي تكامل الأبعاد.
a.size تعود بعدد العناصر في البنية، وهو معادلة لـ np.prod(a.shape)، أي تكامل الأبعاد.
>>> import numpy as np >>> x = np.zeros((3, 5, 2), dtype=np.complex128) >>> x.size 30 >>> np.prod(x.shape) 30
>>> import numpy as np >>> x array([[0, 1], >>> [2, 3]] >>> x.dtype dtype('int32') >>> type(x.dtype)
ndarray.itemsize تعود بمقدار حجم كل عنصر في البنية بنوعية البايت.
على سبيل المثال، إذا كان نوع العنصر float64، فإن قيمة خاصية itemsiz هي 8 (يتخذ float64 64 bit، طول كل بايت هو 8، لذا 64/8، يستخدم 8 بايت)، وإذا كان نوع العنصر complex32، فإن خاصية item هي 4 (32/8).
>>> import numpy as np >>> x = np.array([1,2,3,4,5], dtype = np.int8) >>> print (x.itemsize) 1 >>> y = np.array([1,2,3,4,5], dtype = np.float64) >>> print (y.itemsize) 8
ndarray.flags تعود بمعلومات ذاكرة ndarray، وتشمل الخصائص التالية:
C_CONTIGUOUS (C) - البيانات موجودة في قطعة متصلة بأسلوب C.F_CONTIGUOUS (F) - البيانات موجودة في قطعة متصلة بأسلوب Fortran.OWNDATA (O) - يمتلك المصفوفة ذاكرة الذاكرة التي يستخدمها أو يقرضها من عنصر آخر.WRITEABLE (W) - يمكن كتابة منطقة البيانات، وإذا تم ضبط هذا القيمة على False، فإن البيانات تكون فقط للقراءة.ALIGNED (A) - يتم ضبط البيانات وجميع العناصر بشكل مناسب إلى الأجهزة.UPDATEIFCOPY (U) - هذه المصفوفة هي نسخة من مصفوفة أخرى، عند إطلاق هذه المصفوفة، سيتم تحديث محتويات المصفوفة الأصلية.
>>> import numpy as np >>> a = np.array([1,2,3,4,5]) >>> print(a.flags) C_CONTIGUOUS : True F_CONTIGUOUS : True OWNDATA : True WRITEABLE : True ALIGNED : True WRITEBACKIFCOPY : False UPDATEIFCOPY : False
>>> import numpy as np >>> x = np.sqrt([1+0j, 0+1j]) >>> x.real array([1. , 0.70710678]) >>> x.real.dtype dtype('float64') >>> x.imag array([0. , 0.70710678]) >>> x.imag.dtype dtype('float64')