یک برنامه پایتون بنویسید که میانگین، میانه و انحراف معیار را از یک فایل متنی بزرگ شامل اعداد اعشاری محاسبه کند و در صورت بزرگ بودن داده‌ها با استفاده از پردازش موازی یا خواندن به‌صورت قطعه‌ای (chunked) بهینه‌سازی کند.

9.0 بازدید آخرین ویرایش در 199 روز قبل ساعت 19:41

0.0

برای حل مسئله می‌توانید از numpy برای عملیات برداری (np.mean، np.std) استفاده کنید، اما برای فایل‌های بسیار بزرگ از روش‌هایی مثل numpy.memmap یا خواندن داده‌ها به‌صورت قطعه‌ای و ترکیب نتایج میانی استفاده کنید (یا از الگوریتم آنلاین Welford برای محاسبه میانگین و واریانس بدون بارگذاری کل داده‌ها در حافظه). برای سرعت‌بخشی و بهره‌گیری از معماری‌های HPC می‌توانید پردازش هر قطعه را با multiprocessing یا ThreadPool به‌صورت موازی اجرا کنید و سپس مقادیر جزئی را جمع‌بندی کنید؛ برای میانه در داده‌های بسیار بزرگ می‌توان از نمونه‌گیری یا مرتب‌سازی خارجی (external sort) استفاده کرد. نکات عملی: از عملیات برداری numpy به‌جای حلقه‌های پایتون استفاده کنید، حجم قطعات را طوری انتخاب کنید که حافظه کافی بماند، و خروجی‌ها را به صورت عددی یا فایل ذخیره کنید.

توسط پژوهشگر در 199 روز قبل ساعت 19:41
دسته بندی ها: Python Python for beginner
arash در 199 روز قبل ساعت 19:43

برای محاسبه میانگین و واریانس در فایل‌های بزرگ از الگوریتم آنلاین Welford استفاده کنید تا نیازی به بارگذاری تمام داده‌ها نباشد و پردازش قطعات را با multiprocessing موازی کنید ولی مراقب جمع‌بندی ایمن نتایج جزئی و همگام‌سازی باشید. برای میانه در مجموعه‌های خیلی بزرگ از روش‌های تقریبی مثل t-digest یا نمونه‌برداری هوشمند یا مرتب‌سازی خارجی استفاده کنید چون محاسبه دقیق حافظه و I/O زیادی می‌طلبد. اندازه chunk را طوری انتخاب کنید که عملیات برداری NumPy بتواند از SIMD بهره‌مند شود، و به نوع عدد (float32/64)، جداکننده اعشار و خطاهای تبدیل توجه کنید.

گزارش

1 پاسخ

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

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