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

تعديل شكل عدد في NumPy

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

الحصول على شكل المجموعة

اطبع شكل المجموعات الثنائية -

import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(arr.shape)

نتيجة التنفيذ

(2, 4)

النموذج العددي يعود (2, 4)، مما يعني أن هذا المجموع له 2 مقياس، وكل مقياس يحتوي على 4 عناصر.

استخدم ndmin باستخدام القيم 1،2،3،4 لإنشاء مصفوفة تحتوي على 5 أبعاد، وتحقق من قيمة أحدث النطاق هي 4:

import numpy as np
arr = np.array([1, 2, 3, 4], ndmin=5)
print(arr)
print('شكل المصفوفة:', arr.shape)

نتيجة التنفيذ

[[[[[1 2 3 4]]]]]
شكل المصفوفة: (1, 1, 1, 1, 4)
ماذا يمثل شكل التجميع؟

العدد الصحيح في كل مؤشر يعكس عدد العناصر في المقياس المطلق.
في المثال السابق، المؤشر 4، قيمتنا 4، لذا يمكن القول أن المقياس الخامس (4 + 1 th) يحتوي على 4 عناصر.

تعديل شكل المصفوفة

شكل المصفوفة هو عدد العناصر في كل مقياس. من خلال تعديل شكل المصفوفة، يمكننا إضافة أو إزالة أبعاد أو تغيير عدد العناصر في كل مقياس.

من مصفوفة خطية إلى مصفوفة ثنائية الأبعاد

تحويل مصفوفة تحتوي على 12 عنصر إلى مصفوفة ثنائية الأبعاد.
النطاق الخارجي سيكون له 4 مصفوفة، كل منها يحتوي على 3 عناصر:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(4, 3)
print(newarr)

نتيجة التنفيذ

[[ 1 2 3]
 [ 4 5 6]
 [ 7 8 9]
 [10 11 12]]

من مصفوفة خطية إلى مصفوفة ثلاثية الأبعاد

تحويل مصفوفة تحتوي على 12 عنصر إلى مصفوفة ثلاثية الأبعاد.
النطاق الخارجي سيكون له 2 مصفوفة تحتوي على 3 مصفوفة، كل منها يحتوي على 2 عنصر:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(2, 3, 2)
print(newarr)

نتيجة التنفيذ

[[[[ 1 2]
  [ 3 4]
  [ 5 6]]
 [[ 7 8]
  [ 9 10]
  [11 12]]]
هل يمكن تعديل شكل المصفوفة إلى أي شكل؟

نعم، طالما أن العناصر المطلوبة للتحويل متساوية في كلا الشكلين.
يمكننا تحويل مصفوفة خطية تحتوي على 8 عناصر إلى مصفوفة د维يمية تحتوي على 4 عناصر في 2 صف، ولكن لا يمكننا تحويلها إلى مصفوفة د维يمية تحتوي على 3 عناصر في 3 صف، لأن هذا سيتطلب 3x3 = 9 عنصر.

حاولت تحويل مصفوفة خطية تحتوي على 8 عنصر إلى مصفوفة د维يمية تحتوي على 3 عناصر في كل مقياس (سيؤدي إلى خطأ):

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(3, 3)
print(newarr)

نتيجة التنفيذ

تتبع (أحدث استدعاء أخر):
  ملف "test.py", سطر 5, في

مقياس غير معروف

يمكنك استخدام مقياس 'غير معروف'.
هذا يعني أنك لا تحتاج إلى تحديد رقم دقيق لأحد الأبعاد في طريقة reshape.
تمرير -1 كقيمة، سيفضل لك NumPy حساب هذا الرقم.

تحويل عدد مائة عنصر إلى عدد ثلاثي الأبعاد يحتوي على عناصر 2x2:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(2, 2, -1)
print(newarr)

نتيجة التنفيذ

[[[1 2]
  [3 4]]
 [[5 6]
  [7 8]]]
ملاحظة:لا يمكننا نقل -1 إلى أكثر من مقياس واحد.

تصفية عدد

التصفية (Flattening the arrays) تعني تحويل عدد متعدد الأبعاد إلى عدد مائة.
يمكننا استخدام reshape(-1) لتحقيق ذلك.
تحويل عدد إلى عدد مائة

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr = arr.reshape(-1)
print(newarr)

نتيجة التنفيذ

[1 2 3 4 5 6]

هناك العديد من الوظائف التي يمكن استخدامها لتغيير شكل عدد flatten أو ravel، وإعادة ترتيب العناصر rot90،flip،fliplr،flipud وما إلى ذلك. هذه الوظائف تعتبر جزءًا متوسطًا أو متقدمًا من NumPy.