یک برنامه پایتون بنویسید که میانگین، میانه و انحراف معیار را از یک فایل متنی بزرگ شامل اعداد اعشاری محاسبه کند و در صورت بزرگ بودن دادهها با استفاده از پردازش موازی یا خواندن بهصورت قطعهای (chunked) بهینهسازی کند.
9.0 بازدید آخرین ویرایش در 199 روز قبل ساعت 19:41 0.0
برای حل مسئله میتوانید از numpy برای عملیات برداری (np.mean، np.std) استفاده کنید، اما برای فایلهای بسیار بزرگ از روشهایی مثل numpy.memmap یا خواندن دادهها بهصورت قطعهای و ترکیب نتایج میانی استفاده کنید (یا از الگوریتم آنلاین Welford برای محاسبه میانگین و واریانس بدون بارگذاری کل دادهها در حافظه). برای سرعتبخشی و بهرهگیری از معماریهای HPC میتوانید پردازش هر قطعه را با multiprocessing یا ThreadPool بهصورت موازی اجرا کنید و سپس مقادیر جزئی را جمعبندی کنید؛ برای میانه در دادههای بسیار بزرگ میتوان از نمونهگیری یا مرتبسازی خارجی (external sort) استفاده کرد. نکات عملی: از عملیات برداری numpy بهجای حلقههای پایتون استفاده کنید، حجم قطعات را طوری انتخاب کنید که حافظه کافی بماند، و خروجیها را به صورت عددی یا فایل ذخیره کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای محاسبه میانگین و واریانس در فایلهای بزرگ از الگوریتم آنلاین Welford استفاده کنید تا نیازی به بارگذاری تمام دادهها نباشد و پردازش قطعات را با multiprocessing موازی کنید ولی مراقب جمعبندی ایمن نتایج جزئی و همگامسازی باشید. برای میانه در مجموعههای خیلی بزرگ از روشهای تقریبی مثل t-digest یا نمونهبرداری هوشمند یا مرتبسازی خارجی استفاده کنید چون محاسبه دقیق حافظه و I/O زیادی میطلبد. اندازه chunk را طوری انتخاب کنید که عملیات برداری NumPy بتواند از SIMD بهرهمند شود، و به نوع عدد (float32/64)، جداکننده اعشار و خطاهای تبدیل توجه کنید.
گزارش