فهرست سرفصل‌های NumPy
خانه (HOME) مقدمه (Intro) شروع کار (Getting Started) ساخت آرایه ها (Creating Arrays) ایندکس گذاری آرایه (Array Indexing) برش آرایه (Array Slicing) انواع داده (Data Types) کپی در برابر View (Copy vs View) شکل آرایه (Array Shape) تغییر شکل آرایه (Array Reshape) حلقه روی آرایه (Array Iterating) ترکیب آرایه ها (Array Join) تقسیم آرایه ها (Array Split) جستجو در آرایه (Array Search) مرتب سازی آرایه (Array Sort) فیلتر کردن آرایه (Array Filter) مقدمه تصادفی سازی (Random Intro) توزیع داده (Data Distribution) جابه جایی تصادفی (Random Permutation) ماژول Seaborn (Seaborn Module) توزیع نرمال (Normal Distribution) توزیع دوجمله ای (Binomial Distribution) توزیع پواسون (Poisson Distribution) توزیع یکنواخت (Uniform Distribution) توزیع لجستیک (Logistic Distribution) توزیع چندجمله ای (Multinomial Distribution) توزیع نمایی (Exponential Distribution) توزیع کای دو (Chi Square Distribution) توزیع ریلی (Rayleigh Distribution) توزیع پارتو (Pareto Distribution) توزیع زیف (Zipf Distribution) مقدمه ufunc (ufunc Intro) ساخت تابع ufunc (ufunc Create Function) حساب ساده با ufunc (ufunc Simple Arithmetic) گرد کردن اعشار با ufunc (ufunc Rounding Decimals) لگاریتم ها با ufunc (ufunc Logs) جمع ها با ufunc (ufunc Summations) حاصل ضرب ها با ufunc (ufunc Products) تفاضل ها با ufunc (ufunc Differences) کمترین مضرب مشترک با ufunc (ufunc Finding LCM) بزرگترین مقسوم علیه مشترک با ufunc (ufunc Finding GCD) توابع مثلثاتی با ufunc (ufunc Trigonometric) توابع هذلولوی با ufunc (ufunc Hyperbolic) عملیات مجموعه ای با ufunc (ufunc Set Operations) ویرایشگر (Editor) آزمون (Quiz) تمارین (Exercises) سرفصل دوره (Syllabus) برنامه مطالعه (Study Plan) گواهینامه (Certificate)
نتیجه‌ای برای جستجو یافت نشد.
NumPy

NumPy — لگاریتم ها با ufunc (ufunc Logs)

آخرین بروزرسانی: 1404/08/25

لگاریتم ها با ufunc (ufunc Logs)

در این صفحه با لگاریتم ها با ufunc در NumPy آشنا می شوی. یعنی می بینی چطور روی آرایه ها log پایه 2، 10 و e بگیریم و حتی برای هر پایه دلخواه، یک ufunc بسازیم.

لگاریتم ها با ufunc در NumPy چیست؟

در منبع گفته شده NumPy تابع هایی برای لگاریتم پایه 2، e و 10 دارد. همچنین نوشته می توانیم با ساخت یک ufunc سفارشی، برای هر پایه دلخواه هم لگاریتم بگیریم.

نکته مهم منبع این است که اگر لگاریتم روی عددی تعریف نشود، مقدار inf یا -inf داخل آرایه قرار می گیرد.

اگر می خواهی کل ماجرای ufunc را مرور کنی، صفحه مقدمه ufunc در NumPy جای خوبی است. همچنین برای مقایسه، می توانی صفحه گرد کردن اعشار با ufunc را هم ببینی.

برای تمرین لگاریتم ها با ufunc در NumPy، این سه مرحله را انجام بده:

  1. در کد خودت NumPy را ایمپورت کن و یک آرایه بساز.
  2. روی همان آرایه، تابع های log2، log10 و log را اجرا کن.
  3. در پایان، یک ufunc با frompyfunc بساز و لگاریتم هر پایه را تست کن.

لگاریتم پایه 2 با log2

در بخش Log at Base 2 منبع، از تابع log2() استفاده شده است. این تابع لگاریتم پایه 2 هر عنصر آرایه را حساب می کند.

در مثال منبع از np.arange(1, 10) استفاده شده که عددهای 1 تا 9 را می سازد.

import numpy as np

arr = np.arange(1, 10)

print(np.log2(arr))

مشاهده در ادیتور

نکته: خود منبع توضیح داده که arange(1, 10) عددهای صحیح از 1 (شامل) تا 10 (غیرشامل) را برمی گرداند.

لگاریتم پایه 10 با log10

در بخش Log at Base 10 منبع، تابع log10() معرفی شده است. این تابع لگاریتم پایه 10 هر عدد در آرایه را حساب می کند.

باز هم از همان آرایه 1 تا 9 استفاده شده تا خروجی ها را ببینیم.

import numpy as np

arr = np.arange(1, 10)

print(np.log10(arr))

مشاهده در ادیتور

این مثال دقیقاً همان ساختار مثال پایه 2 را دارد، فقط تابع log10 استفاده شده است.

لگاریتم طبیعی (پایه e) با log

در بخش Natural Log منبع، تابع log() برای لگاریتم پایه e معرفی شده است. این همان لگاریتم طبیعی است.

مثل مثال های قبلی، دوباره آرایه 1 تا 9 ساخته شده و روی آن np.log اجرا شده است.

import numpy as np

arr = np.arange(1, 10)

print(np.log(arr))

مشاهده در ادیتور

به این ترتیب، در یک نگاه می توانی تفاوت خروجی های log2، log10 و log را روی یک آرایه ببینی.

لگاریتم در هر پایه با ufunc سفارشی

در بخش Log at Any Base منبع، گفته شده NumPy مستقیم تابعی برای هر پایه دلخواه ندارد. برای همین از frompyfunc() همراه با math.log() استفاده می شود.

در مثال منبع، یک ufunc جدید به نام nplog ساخته شده است. این تابع دو ورودی می گیرد: عدد و پایه، و یک خروجی برمی گرداند.

from math import log
import numpy as np

nplog = np.frompyfunc(log, 2, 1)

print(nplog(100, 15))

مشاهده در ادیتور

طبق توضیح منبع، این روش اجازه می دهد لگاریتم هر پایه را با یک ufunc روی آرایه ها حساب کنیم.

هشدار: منبع گفته اگر برای بعضی عناصر آرایه نتوان لگاریتم را حساب کرد، مقدار inf یا -inf در آن خانه ها قرار می گیرد. پس بهتر است ورودی ها را کنترل کنی.

اگر بخواهی نام این مبحث را دقیق ببینی، می توانی در لینک داخلی هم از عبارت لگاریتم ها با ufunc در NumPy استفاده کنی تا کاملاً در ذهن بماند.

جمع بندی سریع لگاریتم ها با ufunc

در پایان، چند نکته کوتاه از منبع را مرور کنیم:

  • log2 برای لگاریتم پایه 2 روی آرایه ها استفاده شده است.
  • log10 در منبع برای لگاریتم پایه 10 معرفی شده است.
  • log همان لگاریتم طبیعی با پایه e است.
  • با frompyfunc و math.log می توان ufunc لگاریتم هر پایه را ساخت.
  • اگر لگاریتم قابل محاسبه نباشد، طبق متن منبع مقدار inf یا -inf در آرایه قرار می گیرد.