یک تابع پایتون با استفاده از 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 بهره ببرید.

توسط پژوهشگر در 202 روز قبل ساعت 02:44
دسته بندی ها: Python Python for beginner
arash در 202 روز قبل ساعت 08:39

برای محاسبه توزیع فراوانی مقادیر اعشاری با دقت دو رقم، ابتدا arr = arr.round(2).ravel() را انجام دهید تا خطاهای شناور کاهش یابد. سپس می‌توانید از collections.Counter استفاده کنید و در نهایت نتیجه را با dict(sorted(counter.items())) به صورت دیکشنری مرتب بر حسب کلید بازگردانید. اگر اندازه آرایه بزرگ است، بهینه‌تر است از numpy.unique(return_counts=True) استفاده کنید یا برای مقادیر صحیح پس از ضرب در 100 از numpy.bincount استفاده کنید تا کارایی بهتری داشت. همچنین توصیه می‌شود از حلقه‌های پایتونی روی عناصر استفاده نکنید و عملیات برداری numpy را به کار گیرید.

گزارش

1 پاسخ

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

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