توابع جهانی NumPy

توابع جهانی NumPy: قدرت محاسبات برداری در پایتون

کتابخانه NumPy به عنوان هسته اصلی محاسبات علمی در پایتون شناخته می‌شود. یکی از کلیدی‌ترین ویژگی‌های این کتابخانه، توابع جهانی (Universal Functions) یا ufuncs هستند که امکان انجام عملیات‌های ریاضی روی آرایه‌ها را با کارایی فوق‌العاده فراهم می‌کنند.

مفهوم توابع جهانی در NumPy

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

مزیت اصلی ufuncs این است که از حلقه‌های پایتون اجتناب می‌کنند و محاسبات را به صورت برداری انجام می‌دهند.

انواع توابع جهانی

توابع جهانی NumPy به دو دسته اصلی تقسیم می‌شوند:

  • توابع یونری (Unary ufuncs): توابعی که یک آرایه ورودی می‌گیرند و یک آرایه خروجی تولید می‌کنند مانند توابع مثلثاتی
  • توابع باینری (Binary ufuncs): توابعی که دو آرایه ورودی می‌گیرند و یک آرایه خروجی تولید می‌کنند مانند عملیات‌های جمع و ضرب
نوع تابع مثال توضیحات
یونری np.sqrt() محاسبه جذر هر عنصر آرایه
باینری np.add() جمع عناصر متناظر دو آرایه

مزایای استفاده از توابع جهانی

  1. کارایی بالا: اجرای سریع‌تر نسبت به حلقه‌های پایتون
  2. خوانایی کد: کاهش پیچیدگی کد و افزایش خوانایی
  3. پشتیبانی از پخش (broadcasting): امکان انجام عملیات روی آرایه‌های با ابعاد مختلف
  4. انعطاف‌پذیری: پشتیبانی از انواع داده‌های عددی مختلف

برای مثال، محاسبه سینوس تمام عناصر یک آرایه با تابع جهانی np.sin() بسیار ساده است:

import numpy as np
arr = np.array([0, np.pi/2, np.pi])
result = np.sin(arr)

توابع جهانی سفارشی

NumPy این امکان را فراهم می‌کند که توابع جهانی خود را با استفاده از تابع frompyfunc ایجاد کنید. این ویژگی زمانی مفید است که نیاز به اعمال یک تابع پایتون روی آرایه‌ها دارید.


برای یادگیری عمیق‌تر درباره توابع جهانی NumPy و مثال‌های کاربردی، می‌توانید به منبع مراجعه کنید. این آموزش شامل مثال‌های متنوع و توضیحات تخصصی درباره بهینه‌سازی محاسبات با ufuncs است.