فهرست سرفصل‌های 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 Join)

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

ترکیب آرایه ها (Array Join)

در این بخش با ترکیب آرایه ها در نامپای آشنا می شوی؛ یعنی چطور چند آرایه را کنار هم بچینیم. مثل وقتی دو لیست حضور و غیاب کلاس را یکی می کنی تا یک لیست کامل داشته باشی.

ترکیب آرایه ها در نامپای یعنی چه؟

Joining یعنی گذاشتن محتویات دو آرایه یا بیشتر در یک آرایه. در دیتابیس و SQL، جدول ها را با کلید مشترک وصل می کنیم؛ اما در نامپای، آرایه ها را روی محورهای مختلف axis کنار هم می چینیم.

تابع np.concatenate برای ترکیب آرایه ها استفاده می شود. به آن دنباله ای از آرایه ها و محور axis را می دهیم. اگر axis ندهیم، مقدار پیش فرض صفر است.

ترکیب آرایه های 1 بعدی با concatenate

آرایه 1 بعدی مثل یک صف ساده از عددها است. وقتی دو آرایه 1 بعدی را با concatenate ترکیب می کنی، مثل این است که دو صف را پشت هم قرار بدهی.

import numpy as np

arr1 = np.array([1, 2, 3])

arr2 = np.array([4, 5, 6])

arr = np.concatenate((arr1, arr2))

print(arr)

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

خروجی آرایه ای است که اعداد هر دو آرایه را پشت سر هم نشان می دهد. یعنی [1 2 3 4 5 6].

ترکیب آرایه های 2 بعدی روی محورهای مختلف

در آرایه 2 بعدی، axis=0 یعنی روی ردیف ها، و axis=1 یعنی روی ستون ها کار می کنیم. در این مثال، دو جدول هم اندازه را از کنار به هم می چسبانیم.

import numpy as np

arr1 = np.array([[1, 2],
                 [3, 4]])

arr2 = np.array([[5, 6],
                 [7, 8]])

arr = np.concatenate((arr1, arr2), axis=1)

print(arr)

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

اینجا ستون های آرایه دوم به ستون های آرایه اول چسبیده اند. شرط مهم این است که تعداد ردیف ها یکسان باشد.

ترکیب آرایه ها با stack و محور جدید

Stacking هم شبیه concatenate است؛ اما یک محور جدید می سازد. یعنی آرایه ها را مثل دو برگه روی هم می گذاری، نه فقط کنارش.

تابع np.stack دنباله ای از آرایه ها را می گیرد و آن ها را روی محور جدید کنار هم قرار می دهد.

import numpy as np

arr1 = np.array([1, 2, 3])

arr2 = np.array([4, 5, 6])

arr = np.stack((arr1, arr2), axis=1)

print(arr)

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

در این حالت، آرایه جدید دو ستون دارد؛ هر ستون از یکی از آرایه های قبلی آمده است.

stack آماده روی ردیف ها: hstack

تابع np.hstack یک میانبر برای چیدن آرایه ها به صورت افقی است. یعنی شبیه ترکیب روی ردیف ها در سطح 1 بعدی.

import numpy as np

arr1 = np.array([1, 2, 3])

arr2 = np.array([4, 5, 6])

arr = np.hstack((arr1, arr2))

print(arr)

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

خروجی مثل concatenate برای همین مثال است؛ اما نوشتن hstack خواناتر است.

stack عمودی روی ستون ها: vstack

تابع np.vstack آرایه ها را زیر هم قرار می دهد. یعنی مثل دو ردیف جدید که به جدول اضافه می کنی.

import numpy as np

arr1 = np.array([1, 2, 3])

arr2 = np.array([4, 5, 6])

arr = np.vstack((arr1, arr2))

print(arr)

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

حالا آرایه جدید دو ردیف دارد. ردیف اول از arr1 و ردیف دوم از arr2 آمده است.

stack روی ارتفاع (عمق): dstack

تابع np.dstack آرایه ها را روی محور عمق می چیند. این را مثل ساختن چند لایه تصویر روی هم تصور کن.

import numpy as np

arr1 = np.array([1, 2, 3])

arr2 = np.array([4, 5, 6])

arr = np.dstack((arr1, arr2))

print(arr)

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

نتیجه یک آرایه سه بعدی است. هر عدد در یک لایه عمقی قرار می گیرد.

تمرین عملی برای ترکیب آرایه ها در نامپای

برای تمرین، این گام ها را انجام بده:

  1. دو آرایه 1 بعدی بساز و آن ها را با concatenate ترکیب کن.
  2. دو آرایه 2 بعدی هم اندازه بساز و آن ها را با axis=0 و بعد با axis=1 ترکیب کن و تفاوت را ببین.
  3. از hstack، vstack و dstack برای همان آرایه ها استفاده کن و شکل خروجی را با print بررسی کن.

اگر شکل آرایه ها را کامل یادت نیست، صفحه شکل آرایه (Array Shape) کمک بزرگی است. برای کارهای بیشتر روی حلقه ها، صفحه حلقه روی آرایه (Array Iterating) را هم ببین.

در نهایت، این صفحه یعنی ترکیب آرایه ها در نامپای مرجع اصلی تو برای جمع بندی روش های مختلف join و stack است.

جمع بندی سریع

  • ترکیب آرایه ها در نامپای یعنی کنار هم گذاشتن چند آرایه.
  • np.concatenate آرایه ها را روی محور مشخص ترکیب می کند.
  • np.stack محور جدید می سازد و آرایه ها را روی آن می چیند.
  • hstack برای ترکیب افقی، vstack برای عمودی و dstack برای عمق است.
  • قبل از ترکیب، ابعاد و طول های مؤلفه ها باید سازگار باشند.