فهرست سرفصل‌های 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 — ساخت آرایه ها (Creating Arrays)

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

ساخت آرایه ها (Creating Arrays)

در این بخش با ساخت آرایه ها در نامپای آشنا می شوی. از ساده ترین آرایه 0 بعدی شروع می کنیم و کم کم به آرایه های چندبعدی و تنظیم تعداد بعدها می رسیم.

ایجاد شیء ndarray با تابع array()

نامپای برای کار با آرایه ها ساخته شده است. نوع اصلی آرایه در نامپای ndarray نام دارد. برای ساخت این نوع، از تابع array() استفاده می کنیم.

در مثال زیر یک آرایه ساده می سازیم و نوع آن را چاپ می کنیم.

import numpy as np

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

print(arr)

print(type(arr))

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

نکته: تابع type() در پایتون نوع یک متغیر را نشان می دهد. این جا نشان می دهد که arr از نوع numpy.ndarray است.

برای ساخت ndarray می توانیم لیست، تاپل (Tuple) یا هر شیء شبیه لیست را به array() بدهیم. نامپای آن را به آرایه خودش تبدیل می کند.

مثال: ساخت آرایه از تاپل

در این مثال، از یک تاپل برای ساخت آرایه نامپای استفاده می کنیم.

import numpy as np

arr = np.array((1, 2, 3, 4, 5))

print(arr)

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

ابعاد در آرایه ها (Dimensions in Arrays)

هر بار که آرایه داخل آرایه می گذاری، یک «بعد» جدید ساخته می شود. به این حالت، آرایه تو در تو یا nested array می گویند؛ یعنی عنصری که خودش یک آرایه است.

عدد بعد به ما می گوید چند لایه تو در تو داریم. مثلا اعداد ساده 0 بعدی هستند. یک لیست ساده 1 بعدی است. لیستی از لیست ها 2 بعدی می شود و همین طور ادامه دارد.

آرایه های 0 بعدی (0-D Arrays)

آرایه 0 بعدی یا Scalar در واقع یک مقدار تنها است. هر عدد ساده در یک آرایه، خودش یک 0 بعدی محسوب می شود.

import numpy as np

arr = np.array(42)

print(arr)

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

آرایه های 1 بعدی (1-D Arrays)

آرایه ای که عناصرش 0 بعدی هستند، آرایه 1 بعدی نام دارد. این همان لیست معمولی عددهاست؛ مثل لیست نمره های یک کلاس.

import numpy as np

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

print(arr)

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

آرایه های 2 بعدی (2-D Arrays)

آرایه ای که عناصرش آرایه های 1 بعدی هستند، آرایه 2 بعدی است. این ساختار شبیه جدول یا ماتریس است؛ سطر و ستون دارد.

در ریاضی، از این نوع آرایه برای ماتریس یا تنسور مرتبه دوم استفاده می کنند.

import numpy as np

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

print(arr)

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

نکته: نامپای یک زیرماژول برای کار با ماتریس دارد که numpy.mat نام دارد؛ در مباحث جبر خطی حرفه ای تر استفاده می شود.

آرایه های 3 بعدی (3-D Arrays)

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

در ریاضی به این حالت، تنسور مرتبه سوم می گویند؛ در کار با تصویر و داده های حجیم زیاد دیده می شود.

import numpy as np

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

print(arr)

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

بررسی تعداد بعد با ndim

هر آرایه نامپای ویژگی ای به نام ndim دارد. این ویژگی یک عدد برمی گرداند که تعداد بعدهای آرایه را نشان می دهد.

در مثال زیر، چهار آرایه با ابعاد مختلف می سازیم و ndim هرکدام را چاپ می کنیم.

import numpy as np

a = np.array(42)

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

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

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

print(a.ndim)

print(b.ndim)

print(c.ndim)

print(d.ndim)

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

  1. a یک مقدار تنها است؛ بعدش 0 می شود.
  2. b یک آرایه معمولی است؛ بعدش 1 است.
  3. c شبیه ماتریس است؛ بعدش 2 می شود.
  4. d چند ماتریس روی هم است؛ بعدش 3 است.

آرایه های با بعد بالاتر و ndmin

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

پارامتر ndmin حداقل تعداد بعد را تعیین می کند. نامپای لایه های تو در تو را طبق این عدد می سازد.

import numpy as np

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

print(arr)

print("number of dimensions :", arr.ndim)

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

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

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

قدم بعد از ساخت آرایه ها در نامپای

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

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

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

جمع بندی سریع

  • ساخت آرایه ها در نامپای با تابع array() انجام می شود.
  • 0 بعدی، 1 بعدی، 2 بعدی و 3 بعدی فقط لایه های تو در تو هستند.
  • ویژگی ndim تعداد بعدهای یک آرایه نامپای را نشان می دهد.
  • با پارامتر ndmin می توانی حداقل تعداد بعد را مشخص کنی.
  • بعد از ساخت آرایه ها در نامپای، سراغ ایندکس گذاری و برش برو.