Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
mr-robot77 committed Aug 2, 2023
1 parent 55cd2f9 commit 7520613
Showing 1 changed file with 396 additions and 0 deletions.
396 changes: 396 additions & 0 deletions Machine Learning/ch2.numpy/numpy_land_of_misery/land_of_misery.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,396 @@
{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1 align=center style=\"line-height:200%;font-family:vazir;color:#0099cc\">\n",
"<font face=\"vazir\" color=\"#0099cc\">\n",
"سرزمین فلاکت\n",
"</font>\n",
"</h1>\n",
"\n",
"<p dir=rtl style=\"direction: rtl;text-align: justify;line-height:200%;font-family:vazir;font-size:medium\">\n",
"<font face=\"vazir\" size=3>\n",
"در این تمرین قصد داریم به سازمان حمایت از کارتن‌خواب‌ها کمک کنیم تا بتوانند در روزهای سرد خدمت بهتری به کارتن‌خواب‌ها ارائه دهند. یک داوطلب دست به کار شده و به مدت یک هفته، هر یک ساعت دمای هوا را در یکی پرکارتن‌خواب‌ترین مناطق اندازه گرفته و در لیستی به نام <code>temp_list</code> ذخیره کرده است. یعنی در این لیست به ازای هر روز، یک لیست دیگر به طول ۲۴ در نظر گرفته شده که دمای هوا در تمام ساعات (<b>از ساعت ۰۰ تا ۲۳</b>) در آن ذخیره شده است.\n",
"</font>\n",
"</p>\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"\n",
"temp_list = [[-11,-13,-12,-11,-12,-13,-12,0,1,1,2,4,4,5,6,6,7,8,6,6,5,5,4,3],\n",
" [3,3,2,1,0,1,1,3,3,4,3,4,4,5,4,4,4,3,4,3,3,2,1,0],\n",
" [0,-11,-11,-12,-13,-11,1,1,2,3,4,5,3,2,2,1,1,1,0,0,-11,-11,-12,-13],\n",
" [-13,-13,-14,-14,-15,-16,-16,-15,-14,-14,-13,-12,-12,0,0,1,1,2,1,1,0,-11,-11,-11],\n",
" [-11,-12,-13,-13,-13,-12,-11,0,0,1,2,2,3,4,3,5,3,2,1,1,2,1,0,1],\n",
" [1,1,0,-11,-11,-12,-11,-11,0,1,1,1,2,3,2,3,4,5,6,4,2,2,1,1],\n",
" [0,0,1,0,-11,0,1,1,2,3,3,4,3,4,5,8,7,6,6,5,6,6,5,4]]"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 align=right style=\"line-height:200%;font-family:vazir;color:#0099cc\">\n",
"<font face=\"vazir\" color=\"#0099cc\">\n",
"قسمت اول\n",
"</font>\n",
"</h2>\n",
"<p dir=rtl style=\"direction: rtl;text-align: justify;line-height:200%;font-family:vazir;font-size:medium\">\n",
"<font face=\"vazir\" size=3>\n",
"ابتدا لیست <code>temp_list</code> را تبدیل به آرایه‌ی نامپای کرده و در متغیری به نام <code>temp</code> ذخیره کنید.\n",
"</font>\n",
"</p>\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[-11, -13, -12, -11, -12, -13, -12, 0, 1, 1, 2, 4, 4,\n",
" 5, 6, 6, 7, 8, 6, 6, 5, 5, 4, 3],\n",
" [ 3, 3, 2, 1, 0, 1, 1, 3, 3, 4, 3, 4, 4,\n",
" 5, 4, 4, 4, 3, 4, 3, 3, 2, 1, 0],\n",
" [ 0, -11, -11, -12, -13, -11, 1, 1, 2, 3, 4, 5, 3,\n",
" 2, 2, 1, 1, 1, 0, 0, -11, -11, -12, -13],\n",
" [-13, -13, -14, -14, -15, -16, -16, -15, -14, -14, -13, -12, -12,\n",
" 0, 0, 1, 1, 2, 1, 1, 0, -11, -11, -11],\n",
" [-11, -12, -13, -13, -13, -12, -11, 0, 0, 1, 2, 2, 3,\n",
" 4, 3, 5, 3, 2, 1, 1, 2, 1, 0, 1],\n",
" [ 1, 1, 0, -11, -11, -12, -11, -11, 0, 1, 1, 1, 2,\n",
" 3, 2, 3, 4, 5, 6, 4, 2, 2, 1, 1],\n",
" [ 0, 0, 1, 0, -11, 0, 1, 1, 2, 3, 3, 4, 3,\n",
" 4, 5, 8, 7, 6, 6, 5, 6, 6, 5, 4]])"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"temp = np.array(temp_list)\n",
"temp"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"<h2 align=right style=\"line-height:200%;font-family:vazir;color:#0099cc\">\n",
"<font face=\"vazir\" color=\"#0099cc\">\n",
"قسمت دوم\n",
"</font>\n",
"</h2>\n",
"<p dir=rtl style=\"direction: rtl;text-align: justify;line-height:200%;font-family:vazir;font-size:medium\">\n",
"<font face=\"vazir\" size=3>\n",
"داوطلب ما که دما را اندازه‌گیری کرده پس از مشاهده‌ی نتایج متوجه شده است که دستگاه اندازه‌گیری‌اش چینی بوده و در دماهای زیر صفر،‌ دما را ۱۰ درجه کمتر ثبت کرده است. به‌عنوان مثال اگر دما ۱- بوده، این دستگاه دما را ۱۱- ثبت کرده است. در این قسمت مقادیری که اشتباه ثبت شده‌اند را اصلاح کرده و کل مقادیر را با همان ترتیب قبل در متغیر <code>temp_correct</code> ذخیره کنید.\n",
"</font>\n",
"</p>\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[-11 -13 -12 -11 -12 -13 -12 0 1 1 2 4 4 5 6 6 7 8\n",
" 6 6 5 5 4 3]\n",
" [ 3 3 2 1 0 1 1 3 3 4 3 4 4 5 4 4 4 3\n",
" 4 3 3 2 1 0]\n",
" [ 0 -11 -11 -12 -13 -11 1 1 2 3 4 5 3 2 2 1 1 1\n",
" 0 0 -11 -11 -12 -13]\n",
" [-13 -13 -14 -14 -15 -16 -16 -15 -14 -14 -13 -12 -12 0 0 1 1 2\n",
" 1 1 0 -11 -11 -11]\n",
" [-11 -12 -13 -13 -13 -12 -11 0 0 1 2 2 3 4 3 5 3 2\n",
" 1 1 2 1 0 1]\n",
" [ 1 1 0 -11 -11 -12 -11 -11 0 1 1 1 2 3 2 3 4 5\n",
" 6 4 2 2 1 1]\n",
" [ 0 0 1 0 -11 0 1 1 2 3 3 4 3 4 5 8 7 6\n",
" 6 5 6 6 5 4]]\n"
]
},
{
"data": {
"text/plain": [
"array([[-1, -3, -2, -1, -2, -3, -2, 0, 1, 1, 2, 4, 4, 5, 6, 6,\n",
" 7, 8, 6, 6, 5, 5, 4, 3],\n",
" [ 3, 3, 2, 1, 0, 1, 1, 3, 3, 4, 3, 4, 4, 5, 4, 4,\n",
" 4, 3, 4, 3, 3, 2, 1, 0],\n",
" [ 0, -1, -1, -2, -3, -1, 1, 1, 2, 3, 4, 5, 3, 2, 2, 1,\n",
" 1, 1, 0, 0, -1, -1, -2, -3],\n",
" [-3, -3, -4, -4, -5, -6, -6, -5, -4, -4, -3, -2, -2, 0, 0, 1,\n",
" 1, 2, 1, 1, 0, -1, -1, -1],\n",
" [-1, -2, -3, -3, -3, -2, -1, 0, 0, 1, 2, 2, 3, 4, 3, 5,\n",
" 3, 2, 1, 1, 2, 1, 0, 1],\n",
" [ 1, 1, 0, -1, -1, -2, -1, -1, 0, 1, 1, 1, 2, 3, 2, 3,\n",
" 4, 5, 6, 4, 2, 2, 1, 1],\n",
" [ 0, 0, 1, 0, -1, 0, 1, 1, 2, 3, 3, 4, 3, 4, 5, 8,\n",
" 7, 6, 6, 5, 6, 6, 5, 4]])"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"temp_correct = temp.copy()\n",
"print(temp_correct)\n",
"temp_correct[(temp_correct<0)]+=10\n",
"temp_correct"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"<h2 align=right style=\"line-height:200%;font-family:vazir;color:#0099cc\">\n",
"<font face=\"vazir\" color=\"#0099cc\">\n",
"قسمت سوم\n",
"</font>\n",
"</h2>\n",
"<p dir=rtl style=\"direction: rtl;text-align: justifyt;line-height:200%;font-family:vazir;font-size:medium\">\n",
"<font face=\"vazir\" size=3>\n",
"سازمان حمایت از کارتن‌خواب‌ها اعلام کرده که دما را به شکل فارنهایت (F°) می‌خواهد، اما داده‌هایی که در اختیار ما قرار گرفته به شکل سلسیوس (C°) ثبت شده است. اکنون نیاز است با استفاده از فرمول زیر،‌ دماهای قسمت قبل (آرایه‌ی <code>temp_correct</code>) را به فارنهایت تبدیل کرده و در متغیری به نام <code>temp_F</code> ذخیره کنید.\n",
"</font>\n",
"</p>\n",
"\n",
"$$ F = 1.8 * C + 32 $$\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[30.2 26.6 28.4 30.2 28.4 26.6 28.4 32. 33.8 33.8 35.6 39.2 39.2 41.\n",
" 42.8 42.8 44.6 46.4 42.8 42.8 41. 41. 39.2 37.4]\n",
" [37.4 37.4 35.6 33.8 32. 33.8 33.8 37.4 37.4 39.2 37.4 39.2 39.2 41.\n",
" 39.2 39.2 39.2 37.4 39.2 37.4 37.4 35.6 33.8 32. ]\n",
" [32. 30.2 30.2 28.4 26.6 30.2 33.8 33.8 35.6 37.4 39.2 41. 37.4 35.6\n",
" 35.6 33.8 33.8 33.8 32. 32. 30.2 30.2 28.4 26.6]\n",
" [26.6 26.6 24.8 24.8 23. 21.2 21.2 23. 24.8 24.8 26.6 28.4 28.4 32.\n",
" 32. 33.8 33.8 35.6 33.8 33.8 32. 30.2 30.2 30.2]\n",
" [30.2 28.4 26.6 26.6 26.6 28.4 30.2 32. 32. 33.8 35.6 35.6 37.4 39.2\n",
" 37.4 41. 37.4 35.6 33.8 33.8 35.6 33.8 32. 33.8]\n",
" [33.8 33.8 32. 30.2 30.2 28.4 30.2 30.2 32. 33.8 33.8 33.8 35.6 37.4\n",
" 35.6 37.4 39.2 41. 42.8 39.2 35.6 35.6 33.8 33.8]\n",
" [32. 32. 33.8 32. 30.2 32. 33.8 33.8 35.6 37.4 37.4 39.2 37.4 39.2\n",
" 41. 46.4 44.6 42.8 42.8 41. 42.8 42.8 41. 39.2]]\n"
]
}
],
"source": [
"temp_F = temp_correct.copy()\n",
"temp_F = 1.8*temp_correct+32\n",
"print(temp_F)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"<h2 align=right style=\"line-height:200%;font-family:vazir;color:#0099cc\">\n",
"<font face=\"vazir\" color=\"#0099cc\">\n",
"قسمت چهارم\n",
"</font>\n",
"</h2>\n",
"<p dir=rtl style=\"direction: rtl;text-align: right;line-height:200%;font-family:vazir;font-size:medium\">\n",
"<font face=\"vazir\" size=3>\n",
"در ادامه از شما خواسته شده که گرم‌ترین ساعت هر روز را به همراه دمای هوا در آن ساعت گزارش دهید،‌ زیرا در این ساعت کارتن‌خواب‌ها راحت‌تر می‌توانند برای دریافت غذا از کارتن خود خارج شوند.\n",
"\n",
"<br>\n",
"تحلیل‌های خود را بر روی آرایه‌ی قسمت قبل (<code>temp_F</code>) انجام دهید و خروجی خود را به شکل یک آرایه با ابعاد <code dir=ltr>(2, 7)</code> در متغیر <code>hottest_times</code> ذخیره کنید. در ردیف اول، ساعت بیشترین دما در هر روز و در ردیف دوم، دمای هوا در آن ساعت را قرار دهید. یعنی خروجی شما باید به شکل زیر باشد:\n",
"\n",
"<table dir=ltr style=\"width:100%; text-align:center\">\n",
" <tr>\n",
" <th><font face=\"vazir\" size=3>ساعت بیشترین دما در روز اول</th>\n",
" <th><font face=\"vazir\" size=3>ساعت بیشترین دما در روز دوم</th>\n",
" <th><font face=\"vazir\" size=3>...</th>\n",
" <th><font face=\"vazir\" size=3>ساعت بیشترین دما در روز هفتم</th>\n",
"\n",
" </tr>\n",
" <tr>\n",
" <th><font face=\"vazir\" size=3>بیشترین دما در روز اول</th>\n",
" <th><font face=\"vazir\" size=3>بیشترین دما در روز دوم</th>\n",
" <th><font face=\"vazir\" size=3>...</th>\n",
" <th><font face=\"vazir\" size=3>بیشترین دما در روز هفتم</th>\n",
" </tr>\n",
" \n",
"\n",
"</table>\n",
"</font>\n",
"</p>"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[17. 13. 11. 17. 15. 18. 15. ]\n",
" [46.4 41. 41. 35.6 41. 42.8 46.4]]\n"
]
}
],
"source": [
"hottest_times = np.array([np.argmax(temp_F,axis=1),temp_F.max(axis=1)])\n",
"print(hottest_times)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 align=right style=\"line-height:200%;font-family:vazir;color:#0099cc\">\n",
"<font face=\"vazir\" color=\"#0099cc\">\n",
"قسمت پنجم\n",
"</font>\n",
"</h2>\n",
"\n",
"<p dir=rtl style=\"direction: rtl;text-align: justify;line-height:200%;font-family:vazir;font-size:medium\">\n",
"<font face=\"vazir\" size=3>\n",
"در آخر از شما می‌خواهیم شماره روزی که میانگین دما در آن <b>کمترین</b> بوده را همراه با خود مقدار میانگین دما در آرایه‌ی <code>coldest_day</code> ذخیره کنید، تا سازمان بتواند در چنین روزی بین کارتن‌خواب‌ها نوشیدنی گرم هم پخش کند.\n",
"\n",
"<br>\n",
"تحلیل‌های خود را بر روی آرایه‌ی <code>temp_F</code> انجام دهید و خروجی خود را به شکل یک آرایه‌ی تک‌بعدی به طول ۲ در متغیر <code>coldest_day</code> ذخیره کنید. در عنصر اول، شماره روز با کمترین میانگین دما (بین ۰ تا ۶) و در عنصر دوم، میانگین دما در آن روز را قرار دهید. یعنی خروجی شما باید به شکل زیر باشد:\n",
"\n",
"<table dir=ltr style=\"width:100%\">\n",
" <tr>\n",
" <th><font face=\"vazir\" size=3>روز</th>\n",
" <th><font face=\"vazir\" size=3>دما</th>\n",
" </tr>\n",
"</table>\n",
"\n",
"</font>\n",
"</p>\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[3, 28.400000000000002]\n"
]
}
],
"source": [
"coldest_day = [np.argmin(np.mean(temp_F,axis=1)),np.min(np.mean(temp_F,axis=1))]\n",
"print(coldest_day)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 align=right style=\"line-height:200%;font-family:vazir;color:#0099cc\">\n",
"<font face=\"vazir\" color=\"#0099cc\">\n",
"<b>سلول جواب‌ساز</b>\n",
"</font>\n",
"</h2>\n",
"\n",
"\n",
"<p dir=rtl style=\"direction: rtl; text-align: justify; line-height:200%; font-family:vazir; font-size:medium\">\n",
"<font face=\"vazir\" size=3>\n",
" برای ساخته‌شدن فایل <code>result.zip</code> سلول زیر را اجرا کنید. توجه داشته باشید که پیش از اجرای سلول زیر تغییرات اعمال شده در نت‌بوک را ذخیره کرده باشید (<code>ctrl+s</code>) تا در صورت نیاز به پشتیبانی امکان بررسی کد شما وجود داشته باشد.\n",
"</font>\n",
"</p>"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"File Paths:\n",
"['answers.npz', 'land_of_misery.ipynb']\n"
]
}
],
"source": [
"import zlib\n",
"import zipfile\n",
"\n",
"np.savez(\"answers.npz\", temp = temp, temp_correct = temp_correct, \n",
" temp_F = temp_F, hottest_times = hottest_times, coldest_day = coldest_day)\n",
"\n",
"\n",
"def compress(file_names):\n",
" print(\"File Paths:\")\n",
" print(file_names)\n",
" compression = zipfile.ZIP_DEFLATED\n",
" with zipfile.ZipFile(\"result.zip\", mode=\"w\") as zf:\n",
" for file_name in file_names:\n",
" zf.write('./' + file_name, file_name, compress_type=compression)\n",
"\n",
"file_names = [\"answers.npz\", \"land_of_misery.ipynb\"]\n",
"compress(file_names)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "qenv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.1"
}
},
"nbformat": 4,
"nbformat_minor": 4
}

0 comments on commit 7520613

Please sign in to comment.