فهرست سرفصل‌های NumPy
خانه (HOME) مقدمه (Intro) شروع کار (Getting Started) ساخت آرایه ها (Creating Arrays) ایندکس گذاری آرایه (Array Indexing) برش آرایه (Array Slicing) انواع داده (Data Types) کپی در برابر View (Copy vs View) شکل آرایه (Array Shape) تغییر شکل آرایه (Array Reshape) حلقه روی آرایه (Array Iterating) ترکیب آرایه ها (Array Join) تقسیم آرایه ها (Array Split) جستجو در آرایه (Array Search) مرتب سازی آرایه (Array Sort) فیلتر کردن آرایه (Array Filter) مقدمه تصادفی سازی (Random Intro) توزیع داده (Data Distribution) جابه جایی تصادفی (Random Permutation) ماژول Seaborn (Seaborn Module) توزیع نرمال (Normal Distribution) توزیع دوجمله ای (Binomial Distribution) توزیع پواسون (Poisson Distribution) توزیع یکنواخت (Uniform Distribution) توزیع لجستیک (Logistic Distribution) توزیع چندجمله ای (Multinomial Distribution) توزیع نمایی (Exponential Distribution) توزیع کای دو (Chi Square Distribution) توزیع ریلی (Rayleigh Distribution) توزیع پارتو (Pareto Distribution) توزیع زیف (Zipf Distribution) مقدمه ufunc (ufunc Intro) ساخت تابع ufunc (ufunc Create Function) حساب ساده با ufunc (ufunc Simple Arithmetic) گرد کردن اعشار با ufunc (ufunc Rounding Decimals) لگاریتم ها با ufunc (ufunc Logs) جمع ها با ufunc (ufunc Summations) حاصل ضرب ها با ufunc (ufunc Products) تفاضل ها با ufunc (ufunc Differences) کمترین مضرب مشترک با ufunc (ufunc Finding LCM) بزرگترین مقسوم علیه مشترک با ufunc (ufunc Finding GCD) توابع مثلثاتی با ufunc (ufunc Trigonometric) توابع هذلولوی با ufunc (ufunc Hyperbolic) عملیات مجموعه ای با ufunc (ufunc Set Operations) ویرایشگر (Editor) آزمون (Quiz) تمارین (Exercises) سرفصل دوره (Syllabus) برنامه مطالعه (Study Plan) گواهینامه (Certificate)
نتیجه‌ای برای جستجو یافت نشد.
NumPy

NumPy — برش آرایه (Array Slicing)

آخرین بروزرسانی: 1404/08/25

برش آرایه (Array Slicing)

در این صفحه با برش آرایه در نامپای آشنا می شوی. یعنی یاد می گیری به جای یک خانه، یک تکه از آرایه را با یک دستور ساده جدا کنی؛ مثل وقتی از یک نان، چند برش پشت سرهم برمی داری.

مفهوم برش آرایه در نامپای

در پایتون و نامپای، برش یا Slicing یعنی برداشتن عناصر از یک ایندکس تا ایندکس دیگر. الگو به صورت [start:end] است. start محل شروع است. end جایی است که قبل از آن متوقف می شویم.

الگوی کامل تر این است: [start:end:step]. اینجا مقدار step می گوید چند تا چندتا جلو برویم. اگر start را ننویسی، صفر حساب می شود. اگر end را ننویسی، تا آخر آرایه می رود. اگر step را ننویسی، مقدار پیش فرض یک است.

برش ساده روی آرایه یک بعدی

در این مثال، از ایندکس 1 تا 5 برش می گیریم. یعنی عنصرهای با ایندکس 1، 2، 3 و 4 را برمی داریم. ایندکس 5 در نتیجه نیست؛ چون end همیشه خود ایندکس پایانی را شامل نمی شود.

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

print(arr[1:5])

مشاهده در ادیتور

حالا از ایندکس 4 تا آخر آرایه برش می گیریم. چون end را خالی گذاشته ایم، تا آخر لیست جلو می رود.

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

print(arr[4:])

مشاهده در ادیتور

این بار از ابتدای آرایه تا قبل از ایندکس 4 برش می گیریم. وقتی start را خالی می گذاری، یعنی از اول آرایه حساب کن.

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

print(arr[:4])

مشاهده در ادیتور

نکته: در برش آرایه در نامپای، start داخل نتیجه است اما end نیست. مثل این است که بگویی «از صندلی 2 تا قبل از صندلی 5».

برش منفی روی آرایه

ایندکس منفی یعنی شمردن از آخر آرایه. ایندکس -1 یعنی آخرین عنصر. -2 یعنی یکی قبل از آخر و همین طور عقب.

در این مثال، از سه تاییِ از آخر تا یکی مانده به آخر برش می گیریم. یعنی ایندکس های -3 و -2 را برمی داریم.

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

print(arr[-3:-1])

مشاهده در ادیتور

نکته: ایندکس منفی برای وقتی مفید است که طول آرایه را نمی دانی، اما می خواهی از انتها چند عنصر برداری.

استفاده از step در برش آرایه در نامپای

با step می توانی بگویی چندتا چندتا جلو برود. مثلا step برابر 2 یعنی یک در میان عنصرها را بردارد.

در مثال زیر، از ایندکس 1 تا 5 برش می گیریم، ولی step برابر 2 است. یعنی ایندکس های 1 و 3 انتخاب می شوند.

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

print(arr[1:5:2])

مشاهده در ادیتور

حالا روی کل آرایه step برابر 2 می گذاریم. یعنی از اول آرایه تا آخر، یک در میان عنصر برمی داریم.

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

print(arr[::2])

مشاهده در ادیتور

برش آرایه های دوبعدی

در آرایه های دوبعدی، اول سطر را مشخص می کنی، بعد برش روی ستون ها را. یعنی فرم کلی چیزی شبیه arr[row, start:end] است.

در مثال زیر، از سطر دوم، عناصر ستون های 1 تا 4 (بدون 4) را برمی داریم. سطر دوم یعنی ایندکس سطر 1، چون شمارش از صفر است.

import numpy as np

arr = np.array([[1, 2, 3, 4, 5],
                [6, 7, 8, 9, 10]])

print(arr[1, 1:4])

مشاهده در ادیتور

حالا از هر دو سطر، فقط ستونی با ایندکس 2 را می گیریم. بخش 0:2 یعنی از سطر 0 تا قبل از 2؛ یعنی سطرهای 0 و 1.

import numpy as np

arr = np.array([[1, 2, 3, 4, 5],
                [6, 7, 8, 9, 10]])

print(arr[0:2, 2])

مشاهده در ادیتور

در این مثال، از هر دو سطر، ستون های 1 تا 4 (بدون 4) را می گیریم. خروجی یک آرایه دوبعدی جدید است که فقط آن قسمت میانی جدول را نگه می دارد.

import numpy as np

arr = np.array([[1, 2, 3, 4, 5],
                [6, 7, 8, 9, 10]])

print(arr[0:2, 1:4])

مشاهده در ادیتور

نکته: برش در آرایه دوبعدی مثل این است که از جدول نمره ها، فقط چند سطر و چند ستون خاص را جدا کنی.

قدم بعد از برش آرایه در نامپای

اگر هنوز در ایندکس گذاری ضعف داری، دوباره صفحه ایندکس گذاری آرایه در نامپای را مرور کن. بعد از آن، سراغ صفحه انواع داده در نامپای برو تا جنس داده ها را هم خوب بشناسی.

همچنین برای مرور خود همین موضوع، می توانی همیشه به همین صفحه برش آرایه در نامپای برگردی و مثال ها را دوباره اجرا کنی.

اگر خواستی متن انگلیسی را هم ببینی، صفحه Array Slicing در W3Schools منبع اصلی همین مثال هاست. برای توضیحات عمیق تر، مستندات رسمی NumPy Doc همیشه مفید است.

جمع بندی سریع

  • برش آرایه در نامپای با الگوی start:end یا start:end:step انجام می شود.
  • ایندکس start داخل نتیجه است، اما end در نتیجه نیست.
  • ایندکس منفی کمک می کند از انتهای آرایه برش بگیری.
  • step مشخص می کند چند عنصر را یک بار در میان برداری.
  • در آرایه های دوبعدی، برش روی سطرها و ستون ها هم زمان انجام می شود.