NumPy

انواع داده های آرایه NumPy

آرایه‌های NumPy می‌توانند انواع مختلفی از داده‌ها را ذخیره کنند. این انواع داده‌ها، که با نام “dtype” (data type) شناخته می‌شوند، به NumPy اجازه می‌دهند تا بهینه‌سازی‌های خاصی برای عملکرد و فضای حافظه انجام دهد.

  هر آرایه دارای دو ویژگی اصلی است:

  • داده ها: مقادیر واقعی که در آرایه ذخیره می شوند.
  • نوع داده: نوع داده ای که برای نمایش مقادیر در آرایه استفاده می شود.

NumPy انواع داده مختلفی را برای ذخیره انواع مختلف داده ها ارائه می دهد.

برخی از رایج ترین انواع داده های آرایه NumPy عبارتند از:

انواع داده های آرایه

۱. اعداد صحیح (Integers)

  • int8: عدد صحیح ۸ بیتی (از -۱۲۸ تا ۱۲۷)
  • int16: عدد صحیح ۱۶ بیتی (از -۳۲۷۶۸ تا ۳۲۷۶۷)
  • int32: عدد صحیح ۳۲ بیتی (از -۲,۱۴۷,۴۸۳,۶۴۸ تا ۲,۱۴۷,۴۸۳,۶۴۷)
  • int64: عدد صحیح ۶۴ بیتی (از -۹,۲۲۳,۳۷۲,۰۳۶,۸۵۴,۷۷۵,۸۰۸ تا ۹,۲۲۳,۳۷۲,۰۳۶,۸۵۴,۷۷۵,۸۰۷)

۲. اعداد صحیح بدون علامت (Unsigned Integers)

  • uint8: عدد صحیح ۸ بیتی بدون علامت (از ۰ تا ۲۵۵)
  • uint16: عدد صحیح ۱۶ بیتی بدون علامت (از ۰ تا ۶۵,۵۳۵)
  • uint32: عدد صحیح ۳۲ بیتی بدون علامت (از ۰ تا ۴,۲۹۴,۹۶۷,۲۹۵)
  • uint64: عدد صحیح ۶۴ بیتی بدون علامت (از ۰ تا ۱۸,۴۴۶,۷۴۴,۰۷۳,۷۰۹,۵۵۱,۶۱۵)

۳. اعداد اعشاری (Floating Point)

  • float16: عدد اعشاری ۱۶ بیتی (نیمه دقت)
  • float32: عدد اعشاری ۳۲ بیتی (دقت استاندارد، معادل float در پایتون)
  • float64: عدد اعشاری ۶۴ بیتی (دقت دو برابر، معادل double در زبان‌های دیگر)

۴. اعداد مختلط (Complex Numbers)

  • complex64: عدد مختلط با دو جزء ۳۲ بیتی (قسمت حقیقی و قسمت موهومی)
  • complex128: عدد مختلط با دو جزء ۶۴ بیتی

۵. نوع داده‌های بولی (Boolean)

  • bool: داده‌های بولی که تنها می‌توانند True یا False باشند.

۶. رشته‌های یونیکد (Unicode Strings)

  • str: رشته‌های یونیکد، به عنوان مثال، U برای تعیین تعداد کاراکترها (مثلاً U5 برای رشته‌ای با حداکثر ۵ کاراکتر)

۷. رشته‌های باینری (Byte Strings)

  • bytes: داده‌های رشته‌ای به صورت بایت‌ها، به عنوان مثال، S برای تعیین تعداد بایت‌ها (مثلاً S5 برای رشته‌ای با حداکثر ۵ بایت)

۸. داده‌های زمانی (Datetime)

  • datetime64: داده‌های زمانی برای نگهداری تاریخ و زمان، با دقت و فرمت‌های مختلف.
  • timedelta64: داده‌هایی برای اندازه‌گیری فاصله‌های زمانی.

۹. نوع داده‌های شیء (Object)

  • object: برای ذخیره‌سازی اشیاء عمومی پایتون. استفاده از این نوع داده کمتر رایج است زیرا NumPy بهینه‌سازی‌هایی را که برای انواع داده‌های دیگر انجام می‌دهد، نمی‌تواند برای این نوع انجام دهد.

انتخاب نوع داده مناسب:

  • نوع داده مناسب را با توجه به نوع داده هایی که می خواهید ذخیره کنید و دقت مورد نیاز خود انتخاب کنید.
  • به عنوان مثال، اگر با اعداد صحیح کوچک کار می کنید، np.int8 ممکن است کافی باشد.
  • اما اگر با اعداد صحیح بزرگ یا محاسبات اعشاری پیچیده کار می کنید، به np.int64 یا np.float64 نیاز دارید.

تبدیل نوع داده:

می توانید از توابع NumPy مانند np.astype() برای تبدیل نوع داده یک آرایه به نوع داده دیگر استفاده کنید.

Python
import numpy as np

arr = np.array([۱, ۲, ۳, ۴, ۵])

# تبدیل آرایه به اعداد اعشاری ۳۲ بیتی
float_arr = arr.astype(np.float32)
print(float_arr)  # Output: [1. 2. 3. 4. 5.]

مثال:

در زیر نمونه‌ای از ایجاد آرایه با انواع داده‌های مختلف آورده شده است:

 

import numpy as np

# آرایه از اعداد صحیح ۳۲ بیتی
arr_int32 = np.array([1, 2, 3, 4], dtype=np.int32)

# آرایه از اعداد اعشاری ۶۴ بیتی
arr_float64 = np.array([1.0, 2.5, 3.2], dtype=np.float64)

# آرایه از داده‌های بولی
arr_bool = np.array([True, False, True], dtype=np.bool_)

# آرایه از رشته‌های یونیکد
arr_str = np.array(['a', 'b', 'c'], dtype=np.str_)

# چاپ نوع داده‌های هر آرایه
print(arr_int32.dtype)   # int32
print(arr_float64.dtype) # float64
print(arr_bool.dtype)    # bool
print(arr_str.dtype)     # <U1 (یونیکد رشته ۱ کاراکتری)

 

نکات:

  • نوع داده پیش فرض برای np.array() float64 است.
  • می توانید با استفاده از آرگومان dtype در np.array() نوع داده را هنگام ایجاد آرایه مشخص کنید.
  • برای اطلاعات بیشتر در مورد انواع داده های NumPy و توابع مربوطه، به مستندات رسمی NumPy (https://numpy.org/doc/) مراجعه کنید.

با درک انواع داده های مختلف آرایه NumPy و انتخاب نوع مناسب برای نیازهای خود، می توانید از این کتابخانه قدرتمند به طور کارآمد برای ذخیره، دستکاری و تجزیه و تحلیل داده ها در برنامه های پایتون خود استفاده کنید.

۵/۵ ( ۱ امتیاز )
نمایش بیشتر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا