مهدی عادلی فر
بنیانگذار توسینسو و برنامه نویس

Numpy چیست؟ معرفی کتابخانه علوم داده در پایتون (ادامه)

در مطلب قبلی در مورد کتابخانه numpy صحبت کردیم و در مورد اینکه چه مکانیزم هایی برای تولید آرایه ها دارد مثال زدیم. در این مطلب به ادامه کار با کتابخانه numpy می پردازیم.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

انواع داده در Numpy

همانطور که در مطلب قبل گفته شد در آرایه ای که با استفاده از  numpy ساخته می‌شود باید نوع داده هرکدام از خانه‌های آرایه با بقیه یکی باشد. دلیل این کار هم این است که numpy در اصل با زبان c نوشته شده است که به انواع داده حساس است. انواع داده در numpy در لیست زیر آمده است که می‌توان وقتی که یک آرایه را تعریف می‌کنیم نوع داده آن را نیز مشخص کنیم.

  1. bool_  عبارت های بولی که به شکل یک بایت ذخیره می‌شوند.
  2. Int_ اعداد صحیح با این فرمت ذخیره می‌شوند. (برابر با int64)
  3. int8 اعداد صحیح که برای ذخیره سازی آن‌ها از 8بیت استفاده می‌شود (-128 تا 127)
  4. int16 اعداد صحیح که برای ذخیره سازی آن‌ها از 16 بیت استفاده می‌شود(-32768 تا 32767)
  5. int32 اعداد صحیح که برای ذخیره سازی آن‌ها از 32 بیت استفاده می‌شود.(–2147483648 تا 2147483647)
  6. int64 اعداد صحیح بسیار بزرگ که برای ذخیره سازی آن‌ها از 64 بیت استفاده می‌شود. (–9223372036854775808 تا 9223372036854775807)
  7. دسته انواع uint8, uint16, uint32, uint64 که فقط برای اعداد مثبت می‌باشند و اعداد منفی را قبول نمی کنند و ظرفیتی که در انواع داده int برای اعداد منفی وجود داشت برای اعداد مثبت در نظر گرفته می شود.
  8. float16 اعداد ممیز شناور نیمه دقیق
  9. float32 اعداد ممیز شناور دقیق
  10. float64 اعداد ممیز شناور با دقت بال
  11. complex64 , complex128 اعداد بزرگ و پیچیده.

در کد زیر یک آرایه ۱۰ تایی تعریف شده است و نوع آن نیز مشخص شده است.

np.zeros(10, dtype=np.int16)

اعمالی که می‌توان به کمک numpy بر روی آرایه ها انجام داد

با استفاده از 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

اندیس گذاری آرایه ها در numpy

اندیس گذاری آرایه ها شبیه به اندیس گذاری در زبان‌های خانواده 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 همراه باشید.

نویسنده: مهدی عادلی فر
منبع: tosinso.com
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.


مهدی عادلی فر
مهدی عادلی فر

بنیانگذار توسینسو و برنامه نویس

مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.

نظرات