یک تابع پایتون با استفاده از collections.Counter بنویسید که توزیع فراوانی مقادیر یک آرایه numpy حاوی عددهای اعشاری را پس از گرد کردن هر مقدار تا دو رقم اعشار محاسبه کرده و نتیجه را به صورت دیکشنری مرتب شده بر حسب مقدار بازگرداند.
3.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:44 0.0
برای حل این مسئله از کتابخانههای numpy و collections.Counter استفاده کنید: ابتدا آرایه را با arr.round(2) گرد کنید، به یک لیست یا یکبعدی (arr.ravel()) تبدیل کرده و سپس با Counter روی مقادیر گردشده شمارش انجام دهید؛ در انتها آیتمهای Counter را با sorted بر حسب کلید تبدیل به دیکشنری مرتب برگردانید. نکات مفید: گرد کردن قبل از شمارش از مشکلات دقت ممیز شناور جلوگیری میکند، برای آرایههای بسیار بزرگ از numpy.unique(return_counts=True) یا np.bincount برای اعداد صحیح استفاده کنید تا کارایی بهتری در محیطهای محاسبات علمی / HPC داشته باشید؛ همچنین از انجام حلقههای پایتونی روی هر عنصر اجتناب کنید و از عملیات برداری numpy بهره ببرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای محاسبه توزیع فراوانی مقادیر اعشاری با دقت دو رقم، ابتدا arr = arr.round(2).ravel() را انجام دهید تا خطاهای شناور کاهش یابد. سپس میتوانید از collections.Counter استفاده کنید و در نهایت نتیجه را با dict(sorted(counter.items())) به صورت دیکشنری مرتب بر حسب کلید بازگردانید. اگر اندازه آرایه بزرگ است، بهینهتر است از numpy.unique(return_counts=True) استفاده کنید یا برای مقادیر صحیح پس از ضرب در 100 از numpy.bincount استفاده کنید تا کارایی بهتری داشت. همچنین توصیه میشود از حلقههای پایتونی روی عناصر استفاده نکنید و عملیات برداری numpy را به کار گیرید.
گزارش