English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
拆分是连接的反向操作。
连接(Joining)是将多个数组合并为一个,拆分(Spliting)将一个数组拆分为多个。
数组分割的基本函数如下:
函数 | 数组及操作 |
split | 将一个数组分割为多个子数组 |
hsplit | 将一个数组水平分割为多个子数组(按列) |
vsplit | 将一个数组垂直分割为多个子数组(按行) |
numpy.split 函数沿特定的轴将数组分割为子数组,格式如下:
numpy.split(ary, indices_or_sections, axis)
شرح المعلمات:
ary: المصفوفة التي يتم تقسيمهاindices_or_sections: إذا كان عددًا صحيحًا، يتم تقسيمه بشكل متساوٍ، وإذا كان مصفوفة، فإنها تمثل المواقع التي يتم تقسيمها على طول المحور axis: أية مقياس لتقسيمه، افتراضياً 0، تقسيم أفقي. عند 1، تقسيم عمودي
import numpy as np a = np.arange(15) print('المجموعة الأولى:') print(a) print('\n') اطبع('تقسيم المصفوفة إلى ثلاثة أجزاء متساوية الحجم: ') b = np.split(a, 5) print(b) print('\n') اطبع('تقسيم الموقع في مصفوفة أحادية الأبعاد: ') b = np.split(a, [4, 7]) print(b)
النتيجة هي:
المجموعة الأولى: [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14] تقسيم المصفوفة إلى ثلاثة أجزاء متساوية الحجم: [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8]), array([9, 10, 11]), array([12, 13, 14])] تقسيم الموقع في مصفوفة أحادية الأبعاد: [array([0, 1, 2, 3]), array([4, 5, 6]), array([7, 8, 9, 10, 11, 12, 13, 14])]
عندما تكون العناصر في المصفوفة أقل من الكمية المطلوبة، يجب استخدامدالة array_splitسيتم التكيف من نهاية المصفوفة.
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6]) newarr = np.array_split(arr, 4) اطبع(newarr)
النتيجة هي:
[array([1, 2]), array([3, 4]), array([5]), array([6])]
استخدام دالة numpy.hsplit لتقسيم مصفوفة أفقياً، من خلال تحديد عدد المصفوفات التي سيتم عودتها بنفس الشكل لتقسيم المصفوفة الأصلية.
import numpy as np harr = np.floor(10 * np.random.random((2, 8))) اطبع('العدد الأصلي: ') اطبع(harr) اطبع('مقسوم: ') اطبع(np.hsplit(harr, 4))
النتيجة هي:
المجموعة الأصلية:}} [[7. 9. 2. 6. 8. 7. 4. 5.] [2. 5. 3. 5. 9. 4. 1. 3.]] بعد التقسيم: [ماتريكس([[7.، 9.] [2.، 5.]])، ماتريكس([[2.، 6.] [3.، 5.]])، ماتريكس([[8.، 7.] [3.، 5.]])، ماتريكس([[4.، 5.] [1.، 3.]])]
numpy.vsplit يقوم بقطع بشكل عمودي، ويستخدم بنفس الطريقة التي يستخدمها hsplit.
import numpy as np a = np.arange(16).reshape(4, 4) print('المجموعة الأولى:') print(a) print('\n') print('القطع العمودي:') b = np.vsplit(a, 2) print(b)
النتيجة هي:
المجموعة الأولى: [[0 1 2 3] [4 5 6 7] [8 9 10 11] [12 13 14 15]] القطع العمودي: [ماتريكس([[0، 1، 2، 3], [4، 5، 6، 7]])، ماتريكس([[8، 9، 10، 11]، [12، 13، 14، 15]])]