English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يمكن إنشاء مصفوفة ndarray بخلاف استخدام بناء ndarray الأساسي، يمكن إنشاؤها أيضًا عبر الطرق التالية.
يستخدم طريقة 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 يرجع مصفوفة جديدة بنفس الشكل والنوع مع المصفوفة المقدمة.
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(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',="" )
يستعيد zeros_like مصفوفة صفرية تحتوي على نفس الشكل والنوع مثل المصفوفة المقدمة.
المعلمات
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.])
إنشاء مصفوفة معينة الشكل تحتوي على 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.]])
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([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 لإنشاء مصفوفة أحادية الأبعاد، حيث تكون المصفوفة مكونة من تسلسل تنازلي، ويكون التنسيق كالتالي:
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.]]
تحويل مباشر لأساسيات البيانات لـ 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 القبول buffer كمستقبل مدخل، بقراءة الشكل من تدفق تحويل ndarray الجسم.
numpy.frombuffer(buffer, dtype=float, count=-1, offset=0)
المعلمات
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 بإنشاء كائن 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.]
لتحسين تدريب النموذج وتحسين أداء النموذج، يجب أن تفي بعض التوليدات بالشروط المحددة، مثل توزيع العدل أو التوزيع المتساوٍ، إلخ. هنا يتم تقديم بعض الطرق الشائعة في وحدة 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]]