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

NumPy 创建数组

يمكن إنشاء مصفوفة ndarray بخلاف استخدام بناء ndarray الأساسي، يمكن إنشاؤها أيضًا عبر الطرق التالية.

numpy.empty

يستخدم طريقة numpy.empty لإنشاء مصفوفة معينة الشكل (shape) ونوع البيانات (dtype) وغير معينة التعيين (عشوائية).

numpy.empty(shape, dtype=float, order='C')

يُرجع مصفوفة جديدة بنفس الشكل والنوع دون تعيين عناصرها.

المعلمات

prototype - شكل المصفوفة الصفرية.dtype(اختياري) - نوع البيانات الذي يحتاجه المصفوفة للخروج،مثل numpy.int8. القيمة الافتراضية هي numpy.float64.order(اختياري، افتراضي: 'C') - هناك خياران "C" و "F"، يمثلان، ترتيب السطر أولاً والترتيب العمودي أولاً، لترتيب عناصر الذاكرة في الحاسوب.

الناتج: مصفوفة بنفس شكل المصفوفة المقدمة، لكن لم يتم تعيين بياناتها (عشوائية).

>>> import numpy as np
>>> np.empty([2, 2])
array([[1., 0.],
       [0., 1.]])
>>> np.empty([2, 2], dtype=int)
array([[4607182418800017408, 0],
       [0, 4607182418800017408]])
>>>
ملاحظة:ملاحظة - العناصر في المصفوفة هي قيم عشوائية لأنها لم تتم�始化.

numpy.empty_like

numpy.empty يرجع مصفوفة جديدة بنفس الشكل والنوع مع المصفوفة المقدمة.

numpy.empty_like(prototype, dtype=None, order='K', subok=True, shape=None)

يُرجع مصفوفة جديدة بنفس الشكل والنوع مع المصفوفة المقدمة.

المعلمات

prototype - شكل مصفوفة المصدر ونوع البيانات يحددان نفس الخصائص للنصائح.dtype - نوع البيانات للنتائج المغطاة.order - تشكيل الذاكرة للنتائج المغطاة. إذا كان prototypeFortran متسلسلاً، فإن "A" تعني "F"، وإلا فإنها تكون "C". "K" تعني أن prototype يجب أن يتناسب مع التركيب.subok - إذا كان True، فإن النوع الفرعي الجديد للنوع 'a' سيستخدم، وإلا سيكون نوعًا أساسيًا. الافتراض هو True.shape - تغطية شكل الناتج. إذا كان order ='K' ولا تتغير أعداد الأبعاد، سيتم محاولة الحفاظ على الترتيب، وإلا سيُفترض order ='C'.

الناتج: مصفوفة غير مُعدة (ببيانات عشوائية) تحتوي على نفس الشكل والنوع كما في النموذج.

>>> import numpy as np
>>> a = ([1,2,3], [4,5,6]) # a is array-like
>>> np.empty_like(a)
array([[ 6917529027641081856, -6917520256071729910, 98],
       [ 0, 0, 0]])
>>> a = np.array([[1., 2., 3.],[4.,5.,6.]])
>>> np.empty_like(a)
array([[ 2.68156159e+154, 2.68156159e+154, 3.32479618e+181],
       [ 1.78476163e+185, -1.73059781e-077, 4.21535080e-309]])

numpy.zeros

يُنشئ مصفوفة ب حجم معين ويُملأ عناصرها ب صفر:

numpy.zeros(shape, dtype = float, order = 'C')

المعلمات

shape - شكل المصفوفة الصفرية.dtype - نوع البيانات الذي يحتاجه المصفوفة للخروج،مثل numpy.int8. القيمة الافتراضية هي numpy.float64.order - '{'C'،'F'}،اختياري،القيمة الافتراضية: 'C'،تُعين لترتيب تخزين البيانات في الذاكرة على شكل نسيج (C) أو نسيج فرانكو (Fortran).

الناتج: مصفوفة صفرية تحتوي على نفس الشكل، نوع البيانات والترتيب كما في المصفوفة المقدمة.

>>> import numpy as np
>>> np.zeros(5)
array([0., 0., 0., 0., 0.])
>>> np.zeros((5,), dtype=int)
array([0, 0, 0, 0, 0])
>>> np.zeros((2, 1))
array([[0.],
       [0.]
>>> s = (2,2)
>>> np.zeros((2,), dtype=[('x', 'i4'), ('y', 'i4')]) # custom dtype
array([(0, 0), (0, 0)], dtype=[('x', '<i4' ),="" ('y',="" )

numpy.zeros_like

يستعيد zeros_like مصفوفة صفرية تحتوي على نفس الشكل والنوع مثل المصفوفة المقدمة.

numpy.zeros_like(a, dtype=None, order='K', subok=True, shape=None)[source]

المعلمات

a - خاصية تحديد شكل النصي والنوع الذي يتم العودة إليه.dtype - نوع البيانات المطلوب للنصي.order - تغطية تخطيط الذاكرة للنتيجة.subok - إذا كان True، فإن النوع الفرعي الجديد للنوع 'a' سيستخدم، وإلا سيكون نوعًا أساسيًا. الافتراض هو True.shapeint - تغطية شكل النتيجة.

الرجوع: مصفوفة تحتوي على صفرين لها نفس الشكل والنوع.

>>> import numpy as np
>>> x = np.arange(6)
>>> x = x.reshape((2, 3))
>>> print(x)
[[0 1 2]
 [3 4 5]]
>>> np.zeros_like(x)
array([[0, 0, 0],
       [0, 0, 0]])
>>> y = np.arange(3, dtype=float)
>>> y
array([0., 1., 2.])
>>> np.zeros_like(y)
array([0., 0., 0.])

numpy.ones

إنشاء مصفوفة معينة الشكل تحتوي على 1 لتعبئة:

numpy.ones(shape, dtype=None, order='C')

المعلمات

shape - شكل المصفوفة.dtype - نوع البيانات، اختياريorder - 'C' لتحديد مصفوفة السطر لـ C، أو 'F' لتحديد مصفوفة العمود لـ FORTRAN

>>> import numpy as np
>>> np.ones(5)
array([1., 1., 1., 1., 1.])
>>> np.ones((5,), dtype=int)
array([1, 1, 1, 1, 1])
>>> np.ones((2, 1))
array([[1.],
       [1.]])
>>> s = (2,2)
>>> np.ones(s)
array([[1., 1.],
       [1., 1.]])

numpy.ones_like

zeros_like تعود بنصي يملك نفس الشكل والنوع والنوع المحدد.

numpy.ones_like(a, dtype=None, order='K', subok=True, shape=None)

المعلمات

a - خاصية تحديد شكل النصي والنوع الذي يتم العودة إليه.dtype - نوع البيانات المطلوب للنصي.order - تغطية تخطيط الذاكرة للنتيجة.subok - إذا كان True، فإن النوع الفرعي الجديد للنوع 'a' سيستخدم، وإلا سيكون نوعًا أساسيًا. الافتراض هو True.shape - تغطية شكل النتيجة.

الرجوع: مصفوفة تحتوي على صفرين لها نفس الشكل والنوع.

>>> import numpy as np
>>> x = np.arange(6)
>>> x = x.reshape((2, 3))
>>> x
array([[0, 1, 2],
       [3, 4, 5]])
>>> np.ones_like(x)
array([[1, 1, 1],
       [1, 1, 1]])
>>> y = np.arange(3, dtype=float)
>>> y
array([0., 1., 2.])
>>> np.ones_like(y)
array([1., 1., 1.])

numpy.arange

numpy.arange([start] stop [step] dtype=None)

تعيد القيم المتساوية الفاصلة في الفارق المحدد.
توليد القيم في الفارق النصف مفتوح (بما في ذلك start وليس stop). بالنسبة للمعلمات الصحيحة، تكون الدالة متساوية مع دالة range المدمجة في Python، ولكنها تعود ndarray بدلاً من القائمة.

المعلمات

start - بداية الفارق. يشمل القيمة. القيمة الافتراضية هي 0.stop - نهاية الفارق. لا يشمل القيمة، ما لم يكن الخطوة غير كاملة، وقد أثرت التمثيل العشوائي على طول out.step - المسافة بين القيم. بالنسبة لكل مخرج، هي المسافة بين القيمة المتجاوزة والقيمة المتجاوزة التالية، والخطوة الافتراضية هي 1.dtype - نوع المصفوفة المخرجة.

النتيجة: مصفوفة من القيم المتساوية الفاصلة.

>>> import numpy as np
>>> np.arange(3)
array([0, 1, 2])
>>> np.arange(3.0)
array([0., 1., 2.])
>>> np.arange(3, 7)
array([3, 4, 5, 6])
>>> np.arange(3, 7, 2)
array([3, 5])

numpy.linspace

يستخدم دالة numpy.linspace لإنشاء مصفوفة أحادية الأبعاد، حيث تكون المصفوفة مكونة من تسلسل تنازلي، ويكون التنسيق كالتالي:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

المعلمات

start - القيمة البداية للسلسلة.stop - القيمة النهائية للسلسلة. إذا كان endpoint=True، يتم تضمين هذه القيمة في التسلسل.num - عدد العينات المطبقة على الخطوة المتساوية التي سيتم إنشاؤها، والقيمة الافتراضية هي 50.endpoint - إذا كان هذا القيمة true، يحتوي التسلسل على قيمة stop، وإلا لا يحتوي، والقيمة الافتراضية هي True.retstep - إذا كان True، سيظهر الفارق في مصفوفة المخرجات، وإلا لن يظهر.dtype - نوع البيانات لـ ndarray.

الامثلة التالية تستخدم ثلاثة معلمات، يتم تعيين نقطة البداية إلى 1، نقطة النهاية إلى 10، وعدد العناصر إلى 10.

>>> import numpy as np
>>> a = np.linspace(1, 10, 10)
>>> print(a)
[1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
>>> a = np.linspace(10, 20, 5, endpoint=False)
>>> print(a)
[10. 12. 14. 16. 18.]
>>> a = np.linspace(1,10,10,retstep = True)
>>> print(a)
(array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]), 1.0)
>>> b = np.linspace(1,10,10).reshape([10,1])
>>> print(b)
[[ 1.]]
 [ 2.]
 [ 3.]
 [ 4.]
 [ 5.]
 [ 6.]
 [ 7.]
 [ 8.]
 [ 9.]
 [10.]]

numpy.asarray

تحويل مباشر لأساسيات البيانات لـ Python (مثل القوائم والتراكيب إلخ) لإنشاء ndarray:

>>> import numpy as np
>>> ls1 = [10, 42, 0, -17, 30]
>>> nd1 = np.array(ls1)
>>> print(nd1)
[ 10 42 0 -17 30]
>>>
>>> print(type(nd1))

numpy.asarrayمثل numpy.array، لكن معامل numpy.asarray لديها ثلاثة فقط، أقل بثلاثة من numpy.array.

numpy.asarray(a, dtype = None, order = None)

المعلمات

a - أي شكل من أشكال معاملات المدخل، يمكن أن تكون قائمة، مجموعة من القوائم، مجموعة، مجموعة من المجموعات، قائمة من المجموعات، مصفوفة متعددة الأبعاد.dtype - نوع البيانات، اختياري.order - عدد العينات المطبقة على الخطوة المتساوية التي سيتم إنشاؤها، والقيمة الافتراضية هي 50.endpoint - اختياري، يحتوي على "C" و "F" إثنين من الخيارات، يمثلان، الترتيب الافقي والترتيب العمودي، ترتيب إ immagazine العناصر في ذاكرة الكمبيوتر.

>>> import numpy as np
>>> x = [1,2,3]
>>> a = np.asarray(x)
>>> a
array([1, 2, 3])
>>> x = (1,2,3)
>>> a = np.asarray(x)
>>> print(a)
[1 2 3]
>>> x = [(1,2,3),(4,5)]
>>> a = np.asarray(x)
>>> print(a)
[(1, 2, 3) (4, 5)]
>>> x = [1,2,3]
>>> a = np.asarray(x, dtype = float)
>>> print(a)
[1. 2. 3.]

numpy.frombuffer

numpy.frombuffer تستخدم لتحقيق ديناميكية مصفوفة.
numpy.frombuffer القبول buffer كمستقبل مدخل، بقراءة الشكل من تدفق تحويل ndarray الجسم.

numpy.frombuffer(buffer, dtype=float, count=-1, offset=0)
ملاحظة:عندما يكون buffer نصاً،يكون النص في Python3 نوع Unicode،لذا يجب تحويله إلى bytestring وإضافة b في بداية النص.

المعلمات

buffer - يمكن أن يكون أي كائن، سيتم قراءته بشكل منفذ.dtype - العنصر الذي يعود به النوع البيانات للنصي،اختياريcount - عدد البيانات المقرأ،القيمة الافتراضية هي -1،قراءة جميع البيانات.offset - الموقع الذي يتم فيه القراءة،القيمة الافتراضية هي 0.

>>> import numpy as np
>>> s = b'Hello w3codebox'
>>> a = np.frombuffer(s, dtype='S1')
>>> print(a)
[b'H' b'e' b'l' b'l' b'o' b' ' b'L' b'i' b'd' b'i' b'h' b'u' b'o']

numpy.fromiter

يقوم طريقة numpy.fromiter بإنشاء كائن ndarray من كائن قابل للتنقل،ويرتد به كائن دالة خطية.

numpy.fromiter(iterable, dtype, count=-1)

المعلمات

iterable - كائن قابل للتنقل.dtype - العنصر الذي يعود به النوع البيانات للنصيcount - عدد البيانات المقرأ،القيمة الافتراضية هي -1،قراءة جميع البيانات.

>>> import numpy as np
>>> # استخدام range لإنشاء كائن قائمة
>>> list=range(5)
>>> it=iter(list)
>>> x=np.fromiter(it, dtype=float)
>>> print(x)
[0. 1. 2. 3. 4.]

استخدام وحدة random لإنشاء مصفوفة

لتحسين تدريب النموذج وتحسين أداء النموذج، يجب أن تفي بعض التوليدات بالشروط المحددة، مثل توزيع العدل أو التوزيع المتساوٍ، إلخ. هنا يتم تقديم بعض الطرق الشائعة في وحدة np.random، كما هو موضح في الجدول التالي.

الوظيفةالوصف
np.random.randomإنشاء عدد عشوائي بين 0 و 1
np.random.uniformإنشاء عدد عشوائي متساوٍ التوزيع
np.random.randnإنشاء عدد عشوائي عادي معياري
np.random.randintإنشاء عدد عشوائي صحيح
np.random.normalإنشاء توزيع العدل
np.random.shuffleالخلط العشوائي للترتيب
np.random.seedإعداد بذور العدد العشوائي
random_sample生成随机的浮点数
>>> import numpy as np
>>> # 生成全是 0 的 3x3 矩阵
>>> nd5 =np.zeros([3, 3])
>>> print("nd5 =\n", nd5)
nd5 =
 [[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
>>> # 生成全是 1 的 3x3 矩阵
>>> nd6 = np.ones([3, 3])
>>> print("nd6 =\n", nd6)
nd6 =
 [[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
>>>
>>> # 生成 4 阶的单位矩阵
>>> nd7 = np.eye(4)
>>> print("nd7 =\n", nd7)
nd7 =
 [[1. 0. 0. 0.]
 [0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]]
>>> # 生成 4 阶对角矩阵
>>> nd8 = np.diag([1, 8, 3, 10])
>>> print("nd8 =\n", nd8)
nd8 =
 [[ 1 0 0 0]
 [ 0 8 0 0]
 [ 0 0 3 0]
 [ 0 0 0 10]]