متخصصان علم داده ها data scientists
1.42K subscribers
1.65K photos
255 videos
364 files
509 links
ارتباط با ادمین @IDataScientist
صفحه لینکدین
https://www.linkedin.com/groups/6728779/
Download Telegram
⬅️#کاهش_ابعاد در Numphy
مشکل اصلی کجاس؟ مشکل از اینجا ناشی می‌شود که بسیاری از افراد axis را با جهت حرکت اشتباه می‌گیرند.
در واقع در NumPy، محور (Axis) یک «جهت محاسبه» نیست؛ بلکه یک شمارهٔ بُعد (Dimension Index) است.


➡️⬆️محورها در NumPy واقعاً چه هستند؟

فرض کنید آرایه زیر را داریم:

X = np.array([
[1, 2, 3],
[4, 5, 6]
])

●شکل (Shape) آن:

X.shape

●خروجی:

(2, 3)

یعنی:

Dimension 0 = 2 rows
Dimension 1 = 3 columns

● نامپای از صفر شماره‌گذاری می‌کند :

axis=0 → بُعد اول
axis=1 → بُعد دوم

●بنابراین:

axis=1
┌───────────┐
axis=0 │ 1 2 3 │
│ 4 5 6 │
└───────────┘


↕️مفهوم واقعی axis

وقتی می‌نویسید:

np.mean(X, axis=0)

معنایش این نیست که:

«روی محور 0 حرکت کن»

●بلکه معنایش این است:
«بُعد شماره 0 را حذف کن.»
یا به زبان فنی‌تر:
● روی بعد 0 عمل Reduction انجام بده.

حالا خود ِ Reduction چیست؟
ادامه دارد
#NumPy
#python
@toobabigdatascience
👏2
متخصصان علم داده ها data scientists
⬅️#کاهش_ابعاد در Numphy مشکل اصلی کجاس؟ مشکل از اینجا ناشی می‌شود که بسیاری از افراد axis را با جهت حرکت اشتباه می‌گیرند. در واقع در NumPy، محور (Axis) یک «جهت محاسبه» نیست؛ بلکه یک شمارهٔ بُعد (Dimension Index) است. ➡️⬆️محورها در NumPy واقعاً چه هستند؟…
■ کاهش یا Reduction چیست؟

یادآوری : توابعی مثل:
mean
sum
max
min
std
تعداد ابعاد را کم می‌کنند.


◀️مثلاً:

X.shape

برابر است با:

(2, 3)

اما:

np.mean(X, axis=0)

خروجی:

[2.5, 3.5, 4.5]

شکل خروجی:

(3,)

↩️دقت کنید:

(2,3)
↓
(3,)

بُعد ِشماره 0 حذف شده است.


⏺چرا میانگین ستون‌ها محاسبه می‌شود؟

چون NumPy باید بُعد 0 را حذف کند.

برای حذف آن مجبور است مقادیر موجود در آن بعد را با هم ترکیب کند:

[[1,2,3],
[4,5,6]]


●بُعد صفر شامل این دو سطر است:

row0
row1

پس:

(1,4) → 2.5
(2,5) → 3.5
(3,6) → 4.5

◀️نتیجه:

[2.5, 3.5, 4.5]


axis=1
چه می‌کند؟

np.mean(X, axis=1)
نامپای می‌گوید :

> بُعد شماره 1 را حذف کن.

بُعد 1 همان ستون‌ها هستند.

پس:

[1,2,3] → 2
[4,5,6] → 5

■نتیجه:

[2,5]

⏪شکل خروجی:

(2,)

چون بعد 1 حذف شده است.




↔️حرفه‌ای‌‌تر فکر کنیم:

به جای فکر کردن به «سطر» و «ستون»، به شکل آرایه نگاه کنید.

مثلاً:

X.shape = (100, 50)

یعنی:

axis=0 → 100
axis=1 → 50

وقتی می‌گویید:

np.mean(X, axis=0)

در واقع می‌گویید:

⬅️ آن 100 مقدار را به یک مقدار تبدیل کن.



بنابراین:

(100,50)
↓
(50,)

وقتی می‌گویید:

np.mean(X, axis=1)

می‌گویید:

⬅️ آن 50 مقدار را به یک مقدار تبدیل کن.



بنابراین:

(100,50)
↓
(100,)




↖️↘️↙️مثال سه‌بعدی (جایی که حفظ کردن سطر و ستون دیگر جواب نمی‌دهد)

فرض کنید:

X.shape = (10, 20, 30)

اینجا دیگر سطر و ستون معنای روشنی ندارند.

اما مفهوم axis کاملاً روشن است:

np.mean(X, axis=0)

شکل خروجی:

(20,30)

زیرا بُعد اول حذف شده است.


np.mean(X, axis=1)

⬅️خروجی:

(10,30)




np.mean(X, axis=2)

خروجی:

(10,20)




👁‍🗨قاعده‌‌ی حرفه‌ای ها

بسیاری از برنامه‌نویسان باتجربه اصلاً به «سطر» و «ستون» فکر نمی‌کنند.

🔄آن‌ها فقط این قانون را به خاطر می‌سپارند:


آکسیس مشخص می‌کند کدام بُعد کاهش (reduce) پیدا کند و از خروجی حذف شود.



یا حتی کوتاه‌تر:
➡️ Axis = dimension to collapse.

اگر این جمله را بفهمیم، دیگر هیچ‌وقت در NumPy، Pandas، TensorFlow، PyTorch یا JAX در مورد axis گیج و ویج نخواهیم شد.

#کاهش_ابعاد
#NumPy
#TensorFlow
#Tensor
#PyTorch
@toobabigdatascience
👏2