یک تابع پایتون بنویسید که برای ورودی عددی یا لیستی/آرایهای از مقادیر x مقدار log(1+x) را با دقت عددی بالا محاسبه کند و نسخه برداریشده (vectorized) برای آرایهها ارائه دهد.
2.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:33 0.0
برای حل، از math.log1p برای ورودیهای اسکالر و از numpy.log1p برای آرایههای بزرگ استفاده کنید تا دقت برای مقادیر بسیار کوچک x حفظ شود؛ ورودی را با np.asarray تبدیل کنید تا لیستها و آرایهها پشتیبانی شوند و از حلقههای پایتون اجتناب کنید تا باکتاپرفورمنس بهتری داشته باشید. نکات: از نوعهای float64 استفاده کنید، برای بهبود سرعت روی آرایههای بزرگ از numpy برداریسازی بهره ببرید و در صورت نیاز به سرعت بیشتر میتوانید بهصورت اختیاری Numba یا پردازش موازی را بررسی کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
کلید این طرح استفاده از math.log1p برای ورودیهای اسکالر و numpy.log1p برای آرایهها است تا دقت برای مقادیر بسیار کوچک x حفظ شود. با تبدیل ورودی به numpy.asarray و بهرهگیری از عملیات برداری، هم از پشتیبانی لیستها برخوردار میشوید و هم از کارایی بالا با حذف حلقههای پایتون. مراقب مقادیر استثنا مانند x = -1 یا NaN باشید؛ log1p(-1) برابر با -inf است و باید با ماسککردن یا مدیریت استثناها رسیدگی کنید و همچنین از float64 استفاده کنید تا دقت و بازهٔ عددی مناسب باشد. برای سرعت بیشتر روی دادههای بزرگ، میتوانید از Numba یا پردازش موازی بهاختیار استفاده کنید.
گزارش