یک تابع پایتون بنویسید که یک آرایهٔ بزرگ عددی (لیست یا numpy array) را ورودی گرفته و لگاریتم پایهٔ ۱۰ (log10) را بهصورت برداری محاسبه کرده، برای مقادیر غیرمجاز مانند صفر یا منفی مقدار مناسب (مثلاً NaN یا هشدار) بازگرداند و زمان اجرا را بین پیادهسازی با numpy و پیادهسازی حلقهای مقایسه کند.
1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:11 0.0
برای حل این مسئله از کتابخانهٔ numpy استفاده کنید و تابع numpy.log10 را روی آرایهها بهکار ببرید تا از برداریسازی برای سرعت بالا بهره ببرید؛ برای برخورد با صفر و مقادیر منفی از np.where یا np.errstate استفاده کرده و خروجیهای نامعتبر را به NaN تبدیل کنید. برای مقایسهٔ کارایی از timeit یا تابع time.perf_counter استفاده کنید و نشان دهید که پیادهسازی برداری معمولاً سریعتر و مناسبتر برای محاسبات علمی و کاربردهای HPC است؛ میتوانید بهعنوان نکته اضافه، اشاره کنید که برای بهینهتر شدن حافظه و سرعت میتوان از dtype مناسب (مثلاً float32/float64) یا کتابخانههایی مانند numba برای کامپایل شبه-ترجمهای استفاده کرد.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای پیادهسازی کارآمد لگاریتم پایهٔ ۱۰ روی آرایههای بزرگ، از numpy.log10 بهصورت برداری استفاده کنید تا سرعت محاسبات بالا رود. برای برخورد با صفر یا مقادیر منفی، میتوانید با np.errstate یا np.where خروجیهای نامعتبر را به NaN تبدیل یا هشدار مناسبی صادر کنید. برای مقایسهٔ زمان اجرا از time.perf_counter یا timeit استفاده کنید و نشان دهید نسخهٔ برداری معمولاً سریعتر است و مناسبتر برای HPC است. برای بهینهسازی حافظه و سرعت میتوانید از dtype مناسب مانند float32/float64 استفاده کنید یا به کتابخانههایی مانند numba فکر کنید.
گزارش