در مطلب قبلی در مورد کتابخانه numpy صحبت کردیم و در مورد اینکه چه مکانیزم هایی برای تولید آرایه ها دارد مثال زدیم. در این مطلب به ادامه کار با کتابخانه numpy می پردازیم.
همانطور که در مطلب قبل گفته شد در آرایه ای که با استفاده از numpy ساخته میشود باید نوع داده هرکدام از خانههای آرایه با بقیه یکی باشد. دلیل این کار هم این است که numpy در اصل با زبان c نوشته شده است که به انواع داده حساس است. انواع داده در numpy در لیست زیر آمده است که میتوان وقتی که یک آرایه را تعریف میکنیم نوع داده آن را نیز مشخص کنیم.
در کد زیر یک آرایه ۱۰ تایی تعریف شده است و نوع آن نیز مشخص شده است.
np.zeros(10, dtype=np.int16)
با استفاده از numpy میتوان کارهای زیر را انجام داد
کار با مشخصات آرایه در numpy.
فرض کنید که یک آرایه با مشخصات زیر تعریف شده باشد.
x3 = np.random.randint(10, size=(3, 4, 5))
کد بالا یک آرایه ۳ بعدی 3*4*5 تعریف میکند که نوع داده آن عدد صحیح است. حال برای اینکه این اطلاعات را از numpy دریافت کنیم باید کد های زیر را بنویسیم.
print("x3 ndim: ", x3.ndim)
print("x3 shape:", x3.shape)
print("x3 size: ", x3.size)
print("x3 data type", x3.dtype)
که خروجی کد بالا به شکل زیر خواهد بود.
x3 ndim: 3
x3 shape: (3, 4, 5)
x3 size: 60
x3 data type int64
برای اینکه بدانیم هر خانه آرایه چند بایت حافظه گرفته است و کل آرایه چند بایت حافظه میگیرد از کدهای زیر استفاده می کنیم.
print("itemsize:", x3.itemsize, "bytes")
print("nbytes:", x3.nbytes, "bytes")
که itemsize اندازه یک خانه آرایه و nbytes اندازه کل آرایه را نمایش می دهد. خروجی کدهای بالا به شکل زیر خواهد بود.
itemsize: 8 bytes
nbytes: 480 bytes
اندیس گذاری آرایه ها شبیه به اندیس گذاری در زبانهای خانواده c است یعنی برای اندیس گذاری از صفر شروع شده و اندیس گذاری میشود. مثلاً اگر آرایه زیر را داشته باشیم:
x1=[5,0,3,3,7,9]
و بخواهیم به خانه اول دسترسی داشته باشیم باید از اندیس صفر مانند x1[0] استفاده کنیم. اما numpy آرایه ها را به صورت معکوس هم اندیس گذاری میکند یعنی میتوان آرایه را از آخر به اول هم اندیس گذاری نمود برای این کار یک – در کنار اندیس قرار میدهیم. برای مثال خانه آخر x1[-1] خواهد بود و اندیس x1[-6] همان خانه اول است.
در آرایه های چندبعدی اندیس هرکدام از ابعاد با یک کاما از یکدیگر جدا میشود برای مثال آرایه زیر را که یک آرایه دوبعدی است در نظر بگیرید.
x2 = np.random.randint(10, size=(3, 4))
در آرایه بالا برای دسترسی به خانه اول آرایه باید از اندیس x2[0,0] استفاده کنیم. همچنین برای دسترسی به آخرین خانه هم میتوان از x2[-1,-1] استفاده کرد. همچنین برای تغییر مقدار یک خانه در آرایه نیز از این اندیس گذاری استفاده می شود. دقت داشته باشید که چون نوع داده خانههای آرایه یکی است اگر شما سعی کنید که مثلاً یک عدد اعشاری را در یک آرایه عدد صحیح قرار دهید numpy بدون اینکه از شما خطا بگیرد مقدار اعشاری عدد مورد نظر را حذف کرده و مقدار صحیح را درج می کند.
بنیانگذار توسینسو و برنامه نویس
مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود