از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
راهنمای آرایه ها در پایتون
سرفصلهای مطلب
معرفی
تصور کنید یک لیست پخش از آهنگ های مورد علاقه خود را در گوشی خود دارید. این لیست پخش لیستی است که هر آهنگ به ترتیب خاصی در آن قرار می گیرد. می توانید آهنگ اول را پخش کنید، به آهنگ دوم بروید، به آهنگ پنجم بروید و غیره. این لیست پخش شباهت زیادی به یک آرایه در برنامه نویسی کامپیوتری دارد.
آرایه ها به عنوان یکی از اساسی ترین و پرکاربردترین ساختارهای داده ای هستند.
در اصل، آرایه روشی ساختاریافته برای ذخیره چندین آیتم (مانند اعداد، کاراکترها یا حتی آرایه های دیگر) در یک ترتیب خاص است و شما می توانید در صورت اطلاع از موقعیت آن (شاخص) به سرعت به هر آیتمی دسترسی داشته باشید، تغییر دهید یا حذف کنید.
در این راهنما، یک نمای کلی از ساختار داده آرایه به شما ارائه خواهیم کرد. اول از همه، نگاهی خواهیم داشت به اینکه آرایه ها چیست و ویژگی های اصلی آنها چیست. سپس به دنیای پایتون انتقال میدهیم و چگونگی پیادهسازی، دستکاری و اعمال آرایهها در سناریوهای دنیای واقعی را بررسی میکنیم.
آشنایی با ساختار داده آرایه
آرایه ها یکی از قدیمی ترین و اساسی ترین ساختارهای داده مورد استفاده در علوم کامپیوتر و برنامه نویسی هستند. سادگی آنها، همراه با کارایی آنها در عملیات خاص، آنها را به موضوع اصلی برای هر کسی که در قلمرو مدیریت و دستکاری داده ها می پردازد، تبدیل می کند.
آرایه مجموعهای از آیتمها است، معمولاً همان نوع، ذخیره شده در مکان های حافظه پیوسته.
این ذخیرهسازی پیوسته به آرایهها اجازه میدهد تا با توجه به شاخص آن، به هر عنصر دسترسی ثابتی داشته باشند. هر آیتم در یک آرایه an نامیده می شود عنصر، و موقعیت یک عنصر در آرایه با آن تعریف می شود فهرست مطالب، که معمولا از صفر شروع می شود.
به عنوان مثال، آرایه ای از اعداد صحیح را در نظر بگیرید: (10, 20, 30, 40, 50)
. در اینجا، عنصر 20
دارای شاخصی از 1
:
متعدد هستند مزایای استفاده از آرایه ها برای ذخیره داده های ما برای مثال، آرایهها به دلیل چیدمان حافظهشان این اجازه را میدهند O (1) پیچیدگی زمانی (ثابت) هنگام دسترسی به یک عنصر با شاخص آن. این به ویژه زمانی مفید است که ما به دسترسی تصادفی به عناصر نیاز داریم. علاوه بر این، آرایه ها در آن ذخیره می شوند مکان های حافظه پیوسته، که می تواند منجر به محل بهتر حافظه پنهان و بهبود عملکرد کلی در عملیات خاص شود. یکی دیگر از مزایای قابل توجه استفاده از آرایه ها این است که از آنجایی که آرایه ها پس از اعلام یک اندازه ثابت دارند، مدیریت حافظه و جلوگیری از سرریزهای غیرمنتظره یا خطاهای خارج از حافظه آسان تر است.
توجه داشته باشید: آرایه ها به ویژه در سناریوهایی که در آن اندازه مجموعه از قبل مشخص است و ثابت می ماند، یا جایی که دسترسی تصادفی بیشتر از درج و حذف است.
از طرف دیگر، آرایه ها با مجموعه ای از خود می آیند محدودیت ها. یکی از محدودیت های اصلی آرایه های سنتی آنهاست اندازه ثابت. هنگامی که یک آرایه ایجاد می شود، اندازه آن قابل تغییر نیست. این می تواند منجر به مشکلاتی مانند هدر رفتن حافظه (اگر آرایه خیلی بزرگ باشد) یا نیاز به تغییر اندازه (اگر آرایه خیلی کوچک است) شود. علاوه بر این، درج یا حذف یک عنصر در وسط یک آرایه نیاز به جابجایی عناصر دارد که منجر به بر) پیچیدگی زمانی برای این عملیات
برای جمع بندی همه اینها، اجازه دهید ویژگی های اصلی آرایه ها را با استفاده از مثال لیست پخش آهنگ از ابتدای این راهنما نشان دهیم. آرایه یک ساختار داده است که:
-
نمایه شده است: همانطور که هر آهنگ در لیست پخش شما دارای یک عدد (1، 2، 3، …) است، هر عنصر در یک آرایه دارای یک شاخص است. اما، در اکثر زبان های برنامه نویسی، شاخص از 0 شروع می شود. بنابراین، اولین مورد در شاخص 0، دومین مورد در شاخص 1، و غیره است.
-
دارای سایز ثابت: وقتی یک لیست پخش مثلاً برای 10 آهنگ ایجاد می کنید، نمی توانید یک یازدهمین آهنگ را بدون حذف اول اضافه کنید. به طور مشابه، آرایه ها اندازه ثابتی دارند. هنگامی که یک آرایه با اندازه مشخصی ایجاد می کنید، نمی توانید مواردی بیش از ظرفیت آن اضافه کنید.
-
همگن است: تمام آهنگ های موجود در لیست پخش شما آهنگ های موسیقی هستند. به طور مشابه، همه عناصر در یک آرایه از یک نوع هستند. اگر آرایه ای از اعداد صحیح دارید، نمی توانید ناگهان یک رشته متن را در آن ذخیره کنید.
-
دسترسی مستقیم دارد: اگر می خواهید به آهنگ هفتم در لیست پخش خود گوش دهید، می توانید مستقیماً به آن بپرید. به طور مشابه، با آرایهها، اگر شاخص آن را بدانید، میتوانید فوراً به هر عنصری دسترسی پیدا کنید.
-
حافظه پیوسته: این کمی فنی تر است. هنگامی که یک آرایه در حافظه کامپیوتر ایجاد می شود، یک بلوک پیوسته از حافظه را اشغال می کند. به آن مانند ردیفی از کمدهای مجاور در مدرسه فکر کنید. هر کمد در کنار دیگری قرار دارد و هیچ شکافی در بین آن وجود ندارد.
پایتون و آرایه ها
پایتون که به دلیل انعطاف پذیری و سهولت استفاده اش شناخته شده است، راه های متعددی برای کار با آرایه ها ارائه می دهد. در حالی که پایتون مانند برخی از زبانهای دیگر ساختار داده آرایهای بومی ندارد، جایگزینهای قدرتمندی ارائه میکند که میتوانند به طور مشابه عمل کنند و حتی قابلیتهای گستردهتری را ارائه دهند.
در نگاه اول، لیست پایتون ممکن است مترادف با یک آرایه به نظر برسد، اما تفاوتها و تفاوتهای ظریفی وجود دارد که باید در نظر گرفت:
فهرست کنید | آرایه |
---|---|
یک ساختار داده داخلی پایتون | در پایتون بومی نیستند – آنها از ماژول “آرایه” می آیند |
اندازه دینامیک | اندازه ثابت (از پیش تعریف شده). |
می تواند آیتم هایی با انواع داده های مختلف را در خود نگه دارد | مواردی از همان نوع را نگه دارید |
طیف وسیعی از روش های داخلی را برای دستکاری ارائه دهید | نیاز به وارد کردن ماژول های خارجی |
O(1) پیچیدگی زمانی برای عملیات دسترسی | O(1) پیچیدگی زمانی برای عملیات دسترسی |
حافظه بیشتری مصرف کنید | حافظه کارآمدتر |
با نگاه کردن به این جدول، طبیعی است که بپرسیم – “چه زمانی از کدام استفاده کنیم؟”. خوب، اگر به مجموعهای نیاز دارید که بتواند به صورت پویا رشد کند یا کوچک شود و بتواند انواع دادههای مختلط را در خود جای دهد، فهرست پایتون راهی برای رفتن است. با این حال، برای سناریوهایی که نیاز به مجموعه ای با حافظه کارآمدتر با عناصری از یک نوع دارند، ممکن است از Python استفاده کنید. array
ماژول یا کتابخانه های خارجی مانند NumPy.
این آرایه ماژول در پایتون
هنگامی که بیشتر توسعه دهندگان به آرایه ها در پایتون فکر می کنند، اغلب به طور پیش فرض به لیست ها فکر می کنند. با این حال، پایتون یک ساختار آرایه تخصصی تری را از طریق داخلی خود ارائه می دهد array
مدول. این ماژول یک ذخیره سازی فضای کارآمد از انواع داده های پایه به سبک C در پایتون فراهم می کند.
در حالی که لیستهای پایتون فوقالعاده همهکاره هستند و میتوانند هر نوع شی را ذخیره کنند، گاهی اوقات ممکن است بیش از حد باشند، به خصوص زمانی که شما فقط نیاز به ذخیره مجموعهای از انواع دادههای اساسی مانند اعداد صحیح یا شناور دارید. این array
ماژول راهی برای ایجاد آرایههایی ارائه میدهد که کارآمدتر از لیستها برای انواع دادههای خاص هستند.
ایجاد یک آرایه
برای استفاده از array
ماژول، ابتدا باید آن را وارد کنید:
from array import array
پس از وارد کردن، می توانید یک آرایه با استفاده از array()
سازنده:
arr = array('i', (1, 2, 3, 4, 5))
print(arr)
اینجا 'i'
آرگومان نشان می دهد که آرایه امضا شده را ذخیره می کند اعداد صحیح. چندین نوع کد دیگر موجود است، مانند 'f'
برای شناورها و 'd'
برای دو نفره
دسترسی و اصلاح عناصر
شما می توانید مانند یک لیست به عناصر موجود در یک آرایه دسترسی داشته باشید و آنها را تغییر دهید:
print(arr(2)) # Outputs: 3
و حالا بیایید عنصر را با تغییر مقدار آن به آن تغییر دهیم 6
:
arr(2) = 6
print(arr) # Outputs: array('i', (1, 2, 6, 4, 5))
روش های آرایه
این array
ماژول چندین روش برای دستکاری آرایه ها ارائه می دهد:
-
append()
– یک عنصر به انتهای آرایه اضافه می کند:arr.append(7) print(arr) # Outputs: array('i', (1, 2, 6, 4, 5, 7))
-
extend()
– عناصر تکرارپذیر را به انتها اضافه می کند:arr.extend((8, 9)) print(arr) # Outputs: array('i', (1, 2, 6, 4, 5, 7, 8, 9))
-
pop()
– عنصر را در موقعیت داده شده حذف و برمی گرداند:arr.pop(2) print(arr) # Outputs: array('i', (1, 2, 4, 5, 7, 8, 9))
-
remove()
: اولین رخداد مقدار مشخص شده را حذف می کند:arr.remove(2) print(arr) # Outputs: array('i', (1, 4, 5, 7, 8, 9))
-
reverse()
: ترتیب آرایه را معکوس می کند:arr.reverse() print(arr) # Outputs: array('i', (9, 8, 7, 5, 4, 1))
توجه داشته باشید: روش های بیشتری از آنچه در اینجا ذکر کردیم وجود دارد. رجوع به اسناد رسمی پایتون برای دیدن لیستی از تمام روش های موجود در array
مدول.
در حالی که array
ماژول یک راه کارآمدتر از نظر حافظه برای ذخیره انواع داده های اساسی ارائه می دهد، لازم است آن را به خاطر بسپارید محدودیت ها. بر خلاف لیست ها، آرایه ها هستند همگن. این بدان معناست که تمام عناصر آرایه باید از یک نوع باشند. همچنین، شما فقط می توانید ذخیره کنید انواع داده های پایه به سبک C در آرایه ها اگر نیاز به ذخیره اشیاء سفارشی یا انواع دیگر پایتون دارید، باید از یک لیست یا ساختار داده دیگری استفاده کنید.
آرایه های NumPy
NumPy، مخفف Numerical Python، یک بسته اساسی برای محاسبات عددی در پایتون است. یکی از ویژگی های اصلی آن قدرتمند بودن آن است شیء آرایه N بعدی، که عملیات سریع روی آرایه ها از جمله ریاضی، منطقی، دستکاری شکل و غیره را ارائه می دهد.
آرایه های NumPy از آرایه های داخلی پایتون تطبیق پذیرتر هستند
array
ماژول و جزء اصلی در پروژه های علم داده و یادگیری ماشین هستند.
چرا از آرایه های NumPy استفاده کنیم؟
اولین چیزی که به ذهن می رسد این است کارایی. آرایههای NumPy در C پیادهسازی شدهاند و به دلیل الگوریتمهای بهینه و مزایای ذخیرهسازی حافظه پیوسته، امکان ذخیرهسازی کارآمد حافظه و عملیات سریعتر را فراهم میکنند.
در حالی که آرایه های داخلی پایتون یک بعدی هستند، آرایه های NumPy می توانند چند بعدی، آنها را برای نمایش ماتریس ها یا تانسورها ایده آل می کند.
در نهایت، NumPy ارائه می دهد مجموعه وسیعی از توابع برای کار بر روی این آرایه ها، از محاسبات اولیه تا عملیات ریاضی پیشرفته، تغییر شکل، تقسیم، و غیره.
توجه داشته باشید: وقتی اندازه داده ها را از قبل می دانید، تخصیص از قبل حافظه برای آرایه ها (به ویژه در NumPy) می تواند منجر به بهبود عملکرد شود.
ایجاد یک آرایه NumPy
برای استفاده از NumPy، ابتدا باید آن را نصب کنید (pip install numpy
) و سپس آن را وارد کنید:
import numpy as np
پس از وارد کردن، می توانید یک آرایه NumPy با استفاده از array()
تابع:
arr = np.array((1, 2, 3, 4, 5))
print(arr) # Outputs: (1 2 3 4 5)
همچنین می توانید آرایه های چند بعدی ایجاد کنید:
matrix = np.array(((1, 2, 3), (4, 5, 6), (7, 8, 9)))
print(matrix)
این به ما می دهد:
((1 2 3)
(4 5 6)
(7 8 9))
علاوه بر این روشهای اساسی که میتوانیم آرایهها را ایجاد کنیم، NumPy راههای هوشمندانه دیگری برای ایجاد آرایه در اختیار ما قرار میدهد. یکی از آنها است arange()
روش. آرایه هایی با مقادیر به طور منظم افزایش می دهد:
arr = np.arange(10)
print(arr) # Outputs: (0 1 2 3 4 5 6 7 8 9)
یکی دیگر این است linspace()
روشی که آرایه هایی با تعداد مشخصی از عناصر ایجاد می کند که به طور مساوی بین مقادیر ابتدایی و انتهایی مشخص شده فاصله دارند:
even_space = np.linspace(0, 1, 5)
print(even_space) # Outputs: (0. 0.25 0.5 0.75 1. )
دسترسی و اصلاح عناصر
دسترسی و اصلاح عناصر در یک آرایه NumPy بصری است:
print(arr(2)) # Outputs: 3
arr(2) = 6
print(arr) # Outputs: (1 2 6 4 5)
تقریباً همین کار را برای آرایه های چند بعدی انجام می دهیم:
print(matrix(1, 2)) # Outputs: 6
matrix(1, 2) = 10
print(matrix)
مقدار عنصر در ردیف دوم (شاخص 1
) و ستون سوم (شاخص 2
):
((1 2 3)
(4 5 20)
(7 8 9))
تغییر شکل یک آرایه
NumPy توابع و روش های زیادی را برای دستکاری و عملکرد آرایه ها ارائه می دهد. برای مثال می توانید از reshape()
روش به تغییر شکل یک آرایه. فرض کنید یک آرایه ساده داریم:
import numpy as np
# Create a 1D array
arr = np.array((1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12))
print("Original Array:")
print(arr)
# Output:
# Original Array:
#( 1 2 3 4 5 6 7 8 9 10 11 12)
و ما می خواهیم آن را به یک ماتریس 3×4 تغییر شکل دهیم. تنها کاری که باید انجام دهید استفاده از reshape()
متد با ابعاد دلخواه به عنوان آرگومان ارسال می شود:
# Reshape it to a 3x4 matrix
reshaped_arr = arr.reshape(3, 4)
print("Reshaped Array (3x4):")
print(reshaped_arr)
این منجر به:
Reshaped Array (3x4):
(( 1 2 3 4)
( 5 6 7 8)
( 9 10 11 12))
ضرب ماتریس
این numpy.dot()
روش برای ضرب ماتریس. حاصل ضرب نقطه ای دو آرایه را برمی گرداند. برای آرایه های یک بعدی، آن است محصول داخلی از آرایه ها برای آرایه های 2 بعدی، معادل است با ضرب ماتریسو برای ND یک است مجموع محصول بر روی آخرین محور آرایه اول و دوم به آخر آرایه دوم.
بیایید ببینیم چگونه کار می کند. ابتدا، بیایید حاصل ضرب نقطه ای دو آرایه 1 بعدی (ضرب داخلی بردارها) را محاسبه کنیم:
import numpy as np
# 1-D array dot product
vec1 = np.array((1, 2, 3))
vec2 = np.array((4, 5, 6))
dot_product_1d = np.dot(vec1, vec2)
print("Dot product of two 1-D arrays:")
print(dot_product_1d) # Outputs: 32 (1*4 + 2*5 + 3*6)
این منجر به:
Dot product of two 1-D arrays:
32
32
در واقع، حاصلضرب داخلی دو آرایه است – (14 + 25 + 3*6). در مرحله بعد، می توانیم ضرب ماتریسی دو آرایه دو بعدی را انجام دهیم:
# 2-D matrix multiplication
mat1 = np.array(((1, 2), (3, 4)))
mat2 = np.array(((2, 0), (1, 3)))
matrix_product = np.dot(mat1, mat2)
print("Matrix multiplication of two 2-D arrays:")
print(matrix_product)
که به ما می دهد:
Matrix multiplication of two 2-D arrays:
(( 4 6)
(10 12))
آرایههای NumPy یک گام مهم در مقایسه با فهرستهای داخلی پایتون هستند array
ماژول، به ویژه برای محاسبات علمی و ریاضی. کارایی آنها، همراه با عملکرد غنی ارائه شده توسط کتابخانه NumPy، آنها را به ابزاری ضروری برای هر کسی که به دنبال انجام عملیات عددی در پایتون است تبدیل می کند.
نتیجه
آرایه ها، سنگ بنای علوم کامپیوتر و برنامه نویسی، بارها و بارها ارزش خود را در برنامه ها و حوزه های مختلف ثابت کرده اند. در پایتون، این ساختار داده بنیادی، از طریق تجسم های مختلف آن مانند لیست ها، array
ماژول و آرایه های قدرتمند NumPy ترکیبی از کارایی، تطبیق پذیری و سادگی را به توسعه دهندگان ارائه می دهد.
در طول این راهنما، ما از مفاهیم اساسی آرایه ها به کاربردهای عملی آنها در پایتون سفر کرده ایم. دیدهایم که چگونه آرایهها، با ماهیت پیوستگی حافظهشان، زمانهای دسترسی سریع را فراهم میکنند، و چگونه فهرستهای پویا پایتون لایهای از انعطافپذیری را به ارمغان میآورند. ما همچنین به دنیای تخصصی NumPy پرداختهایم، جایی که آرایهها به ابزارهای قدرتمندی برای محاسبات عددی تبدیل میشوند.
منتشر شده در 1402-12-26 06:23:09