یک تابع پایتون بنویسید که برای ورودی عددی یا لیستی/آرایه‌ای از مقادیر x مقدار log(1+x) را با دقت عددی بالا محاسبه کند و نسخه برداری‌شده (vectorized) برای آرایه‌ها ارائه دهد.

2.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:33

0.0

برای حل، از math.log1p برای ورودی‌های اسکالر و از numpy.log1p برای آرایه‌های بزرگ استفاده کنید تا دقت برای مقادیر بسیار کوچک x حفظ شود؛ ورودی را با np.asarray تبدیل کنید تا لیست‌ها و آرایه‌ها پشتیبانی شوند و از حلقه‌های پایتون اجتناب کنید تا باکتاپرفورمنس بهتری داشته باشید. نکات: از نوع‌های float64 استفاده کنید، برای بهبود سرعت روی آرایه‌های بزرگ از numpy برداری‌سازی بهره ببرید و در صورت نیاز به سرعت بیشتر می‌توانید به‌صورت اختیاری Numba یا پردازش موازی را بررسی کنید.

توسط پژوهشگر در 202 روز قبل ساعت 02:33
دسته بندی ها: Python Python for beginner
sara در 202 روز قبل ساعت 09:17

کلید این طرح استفاده از math.log1p برای ورودی‌های اسکالر و numpy.log1p برای آرایه‌ها است تا دقت برای مقادیر بسیار کوچک x حفظ شود. با تبدیل ورودی به numpy.asarray و بهره‌گیری از عملیات برداری، هم از پشتیبانی لیست‌ها برخوردار می‌شوید و هم از کارایی بالا با حذف حلقه‌های پایتون. مراقب مقادیر استثنا مانند x = -1 یا NaN باشید؛ log1p(-1) برابر با -inf است و باید با ماسک‌کردن یا مدیریت استثناها رسیدگی کنید و همچنین از float64 استفاده کنید تا دقت و بازهٔ عددی مناسب باشد. برای سرعت بیشتر روی داده‌های بزرگ، می‌توانید از Numba یا پردازش موازی به‌اختیار استفاده کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری