آیا تا به حال هنگام کار با آرایههای عددی به دنبال راهکاری سریع و ساده برای پیدا کردن بزرگترین مقدار یا بالاترین مقدار بودهاید؟ اگر جواب شما مثبت است، کتابخانه قدرتمند NumPy دقیقاً همان چیزی است که نیاز دارید. در این مقاله با دو تابع کلیدی این کتابخانه، یعنی max() و maximum()، آشنا خواهید شد. این دو ابزار به شما کمک میکنند تا به راحتی بزرگترین و بالاترین مقدار در NumPy را پیدا کرده و دادههای پیچیده را مدیریت کنید.
ما در این مقاله نه تنها نحوه استفاده از این توابع را بررسی میکنیم، بلکه تفاوتها، کاربردهای پیشرفته و نحوه مدیریت دادههای گمشده را نیز بهصورت کامل توضیح خواهیم داد.
NumPy: پایتون عددی
کتابخانه NumPy که مخفف “Numerical Python” است، یکی از ابزارهای قدرتمند برای محاسبات عددی و تحلیل داده در پایتون به شمار میرود. این کتابخانه با امکانات پیشرفتهای مثل آرایههای چندبعدی، عملیات ریاضی برداری و مدیریت دادههای بزرگ، تحلیل داده را برای توسعهدهندگان سادهتر کرده است.
ویژگیهای کلیدی NumPy
- پشتیبانی از آرایههای چندبعدی با عملکرد بالا
- انجام محاسبات برداری سریع و دقیق
- مدیریت و پردازش دادههای عددی در مقیاس بزرگ
ایجاد و استفاده از آرایههای NumPy
آرایهها یکی از مهمترین ساختارهای داده در NumPy هستند. این آرایهها مانند لیستها عمل میکنند، اما برخلاف آنها، عملکردی بسیار سریعتر و با مصرف حافظه کمتر دارند.
برای ایجاد یک آرایه در NumPy، میتوانید از تابع np.array() استفاده کنید:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
ویژگیهای این آرایهها عبارتند از:
- امکان تعریف ابعاد مختلف برای آرایهها (یکبعدی، دوبعدی، یا چندبعدی).
- پشتیبانی از عملیات ریاضی مانند جمع، تفریق، ضرب، و تقسیم بر روی آرایهها.
- امکان تعیین نوع داده (Data Type) آرایه.
ایجاد آرایهها به روشهای دیگر
علاوه بر np.array()، NumPy روشهای متنوع دیگری برای ایجاد آرایهها فراهم کرده است. این روشها شامل ایجاد آرایههای خاص با مقادیر پیشفرض است:
۱.ایجاد آرایهای از اعداد صفر:
zeros_array = np.zeros((3, 3))
print(zeros_array)
۲.ایجاد آرایهای از اعداد یک:
ones_array = np.ones((2, 4))
print(ones_array)
۲.ایجا۳.ایجاد آرایهای با محدوده عددی مشخص:
با استفاده از np.arange()
میتوانید آرایهای از اعداد در یک بازه مشخص ایجاد کنید:
range_array = np.arange(0, 10, 2)
print(range_array)
این روشها در پروژههایی که نیاز به دادههای اولیه خاص دارند، بسیار کاربردی هستند.
تابع max() در NumPy: پیدا کردن بزرگترین مقدار
تابع max() یکی از ابزارهای اصلی کتابخانه NumPy است که برای یافتن بزرگترین مقدار در آرایهها استفاده میشود. این تابع قابلیت کار با آرایههای یکبعدی و چندبعدی را دارد و در تحلیل دادهها و یادگیری ماشین بسیار کاربردی است.
استفاده از max()
تابع np.max()
برای یافتن بزرگترین مقدار در آرایهها استفاده میشود. این تابع میتواند بر روی آرایههای یکبعدی یا چندبعدی اعمال شود.
برای یک آرایه ساده، بزرگترین مقدار را میتوانید به این شکل پیدا کنید:
import numpy as np
arr = np.array([3, 7, 1, 9, 5])
print(np.max(arr)) # خروجی: ۹
مشخص کردن محور (Axis)
اگر آرایه شما چندبعدی باشد، میتوانید با استفاده از پارامتر axis
مشخص کنید که بزرگترین مقدار در طول کدام محور محاسبه شود:
arr_2d = np.array([[1, 5, 9], [2, 6, 8]])
print(np.max(arr_2d, axis=0)) # خروجی: [2, 6, 9] (بزرگترین مقدار در هر ستون)
print(np.max(arr_2d, axis=1)) # خروجی: [9, 8] (بزرگترین مقدار در هر سطر)
این انعطافپذیری باعث میشود که np.max()
برای تحلیل دادههای پیچیده بسیار مفید باشد.
مدیریت مقادیر گمشده در np.max()
اگر آرایه شما شامل مقادیر NaN
(Not a Number) باشد، تابع np.max()
نمیتواند بزرگترین مقدار را به درستی محاسبه کند. برای مدیریت این شرایط، NumPy تابع np.nanmax()
را ارائه میدهد که مقادیر NaN
را نادیده گرفته و بزرگترین مقدار واقعی را برمیگرداند.
arr_with_nan = np.array([3, 7, np.nan, 9, 5])
print(np.max(arr_with_nan)) # خروجی: nan
print(np.nanmax(arr_with_nan)) # خروجی: ۹
استفاده از np.nanmax()
برای مجموعه دادههایی که ممکن است مقادیر گمشده داشته باشند، بسیار کارآمد است.
بررسی توابع مرتبط با بزرگترین مقدار
علاوه بر np.max()
و np.nanmax()
، NumPy توابع دیگری نیز برای کار با بزرگترین مقدار ارائه میدهد که ممکن است بسته به نیاز شما مفید باشند:
۱.np.amax()
این تابع مشابه np.max()
عمل میکند و برای یافتن بزرگترین مقدار در آرایهها استفاده میشود.
print(np.amax([1, 3, 7, 2])) # خروجی: ۷
۲.np.maximum()
این تابع برای مقایسه دو آرایه به صورت عنصر به عنصر استفاده میشود و بزرگترین مقدار هر جفت را برمیگرداند.
arr1 = np.array([1, 5, 9])
arr2 = np.array([3, 4, 8])
print(np.maximum(arr1, arr2)) # خروجی: [3, 5, 9]
این توابع در تحلیل دادهها و یافتن مقادیر بحرانی به شما کمک میکنند و بسته به شرایط دادهها، انتخاب مناسبی برای کاربردهای مختلف خواهند بود.
تابع maximum() در NumPy: مقادیر بزرگتر بین آرایهها
تابع maximum()
در کتابخانه NumPy به شما این امکان را میدهد که بین عناصر دو آرایه مقایسه انجام دهید و بزرگترین و بالاترین مقدار هر جفت عنصر در NumPy را پیدا کنید. این تابع بهصورت عنصر به عنصر کار میکند و یک آرایه جدید با مقادیر بزرگتر را برمیگرداند. این قابلیت به خصوص در مواقعی که نیاز به مقایسه سریع و دقیق دادهها بین دو مجموعه داشته باشید، بسیار مفید است.
استفاده از np.maximum()
تابع np.maximum()
برای مقایسه مقادیر موجود در دو آرایه استفاده میشود. این تابع در هر موقعیت از آرایه، مقادیر دو آرایه را مقایسه کرده و بزرگترین مقدار را انتخاب میکند.
در اینجا دو آرایه را با هم مقایسه میکنیم:
import numpy as np
arr1 = np.array([1, 5, 9, 3])
arr2 = np.array([4, 2, 8, 6])
result = np.maximum(arr1, arr2)
print(result) # خروجی: [4, 5, 9, 6]
در این مثال، بزرگترین مقدار بین مقادیر متناظر در دو آرایه انتخاب شده و به صورت آرایهای جدید برگردانده شده است.
پشتیبانی از Broadcasting
یکی از ویژگیهای مهم تابع np.maximum()
این است که از Broadcasting پشتیبانی میکند. این ویژگی به شما اجازه میدهد که آرایههایی با ابعاد متفاوت را نیز با هم مقایسه کنید:
arr = np.array([[1, 2, 3], [4, 5, 6]])
scalar = 3
result = np.maximum(arr, scalar)
print(result) # خروجی: [[3, 3, 3], [4, 5, 6]]
در اینجا، عدد اسکالر ۳ با تمام مقادیر آرایه مقایسه شده و بزرگترین مقدار انتخاب شده است.
مدیریت مقادیر گمشده در np.maximum()
مانند سایر توابع NumPy، اگر آرایهها حاوی مقادیر NaN
باشند، این مقادیر میتوانند نتیجه محاسبه را تحت تأثیر قرار دهند. در این شرایط، تابع np.maximum()
خروجی را به صورت NaN
برمیگرداند.
استفاده از np.fmax()
برای نادیده گرفتن مقادیر NaN
و انتخاب بزرگترین مقدار واقعی، میتوانید از تابع np.fmax()
استفاده کنید. این تابع همانند np.maximum()
عمل میکند، اما NaN
را نادیده میگیرد:
arr1 = np.array([1, np.nan, 3, 5])
arr2 = np.array([2, 4, np.nan, 3])
result = np.fmax(arr1, arr2)
print(result) # خروجی: [2. 4. 3. 5.]
این روش برای مجموعه دادههایی که ممکن است شامل مقادیر گمشده باشند، بسیار مناسب است و از بروز خطا جلوگیری میکند.
استفادههای پیشرفته
کتابخانه NumPy امکانات قدرتمندی برای بهینهسازی عملکرد و مدیریت دادهها ارائه میدهد. در این بخش، به بررسی برخی از تکنیکهای پیشرفته، از جمله استفاده مجدد از حافظه، فیلتر کردن آرایهها، و استفاده از Broadcasting برای مقایسه آرایهها با ابعاد مختلف میپردازیم.
استفاده مجدد از حافظه
در برخی از محاسبات عددی، ممکن است نیاز باشد که از آرایههای موجود به جای ایجاد آرایههای جدید استفاده کنید. NumPy این امکان را فراهم میکند که برای بهینهسازی حافظه و بهبود عملکرد، دادههای محاسباتی را مستقیماً در آرایههای موجود ذخیره کنید.
با استفاده از پارامتر out
میتوانید نتیجه محاسبه را مستقیماً در یک آرایه موجود ذخیره کنید:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
result = np.empty_like(arr1)
np.add(arr1, arr2, out=result)
print(result) # خروجی: [5, 7, 9]
این روش به کاهش مصرف حافظه و جلوگیری از ایجاد آرایههای جدید کمک میکند، خصوصاً زمانی که با دادههای بزرگ کار میکنید.
فیلتر کردن آرایهها
یکی دیگر از امکانات قدرتمند NumPy، فیلتر کردن آرایهها بر اساس شرایط خاص است. با استفاده از Boolean Indexing یا ماسکها، میتوانید مقادیر خاصی از آرایه را انتخاب یا تغییر دهید.
فیلتر کردن اعدادی که بزرگتر از یک مقدار خاص هستند:
arr = np.array([1, 3, 7, 2, 5])
filtered = arr[arr > 3]
print(filtered) # خروجی: [7, 5]
تغییر مقادیر انتخاب شده
میتوانید مقادیر فیلتر شده را تغییر دهید:
arr[arr > 3] = 0
print(arr) # خروجی: [1, 3, 0, 2, 0]
این روش در تحلیل دادهها و پیشپردازش دادهها بسیار کارآمد است.
مقایسه آرایههای با شکل متفاوت با استفاده از Broadcasting
Broadcasting یکی از ویژگیهای کلیدی NumPy است که به شما اجازه میدهد عملیات را بین آرایههایی با ابعاد متفاوت انجام دهید. NumPy به طور خودکار آرایههای کوچکتر را برای مطابقت با ابعاد آرایههای بزرگتر گسترش میدهد.
مقایسه یک آرایه دوبعدی با یک آرایه یکبعدی:
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
arr1d = np.array([10, 20, 30])
result = arr2d + arr1d
print(result)
# خروجی:
# [[11 22 33]
# [14 25 36]]
این قابلیت در پردازش دادههای عددی بسیار مفید است، زیرا کد را سادهتر و کارایی را بالاتر میبرد.
رعایت قوانین Broadcasting
برای استفاده صحیح از Broadcasting، باید قوانین خاصی رعایت شود. NumPy ابعاد آرایهها را بررسی میکند و در صورت امکان، آنها را به ابعاد قابل مقایسه گسترش میدهد. قوانین Broadcasting به شرح زیر هستند:
- اگر تعداد ابعاد آرایهها متفاوت باشد، ابعاد کوچکتر با اضافه کردن “۱” همسطح میشوند.
- مقادیر در هر بعد باید برابر باشند یا یکی از آنها عدد ۱ باشد.
- اگر شرایط بالا رعایت نشود، خطای ValueError دریافت خواهید کرد.
مثال از رعایت قوانین Broadcasting:
arr1 = np.array([[1], [2], [3]])
arr2 = np.array([10, 20, 30])
result = arr1 + arr2
print(result)
# خروجی:
# [[11 21 31]
# [12 22 32]
# [13 23 33]]
این عملیات به دلیل رعایت قوانین Broadcasting بدون مشکل انجام میشود.
سوالات متداول
- تفاوت بین np.max() و np.maximum() چیست؟
- np.max() بزرگترین مقدار یک آرایه (یا محور خاص) را برمیگرداند.
- np.maximum() مقادیر دو آرایه را بهصورت عنصر به عنصر مقایسه میکند.
- چگونه مقادیر گمشده (NaN) را در آرایهها مدیریت کنیم؟
از np.nanmax() یا np.fmax() استفاده کنید تا مقادیر NaN نادیده گرفته شوند. - آیا میتوان از Broadcasting در
np.maximum()
استفاده کرد؟
بله،np.maximum()
از Broadcasting پشتیبانی میکند. این ویژگی به شما اجازه میدهد تا آرایههایی با ابعاد متفاوت را مقایسه کنید، به شرطی که قوانین Broadcasting رعایت شوند. - چگونه میتوان بزرگترین مقدار در یک آرایه چندبعدی را پیدا کرد؟
برای پیدا کردن بزرگترین مقدار در یک آرایه چندبعدی، میتوانید از پارامترaxis
درnp.max()
استفاده کنید. - چه زمانی باید از
np.fmax()
به جایnp.maximum()
استفاده کرد؟
اگر آرایههای شما شامل مقادیرNaN
باشند و بخواهید این مقادیر را نادیده بگیرید، میتوانید ازnp.fmax()
استفاده کنید. این تابع مقادیرNaN
را نادیده گرفته و بزرگترین مقدار واقعی را بازمیگرداند. - اگر دو آرایه برای مقایسه در
np.maximum()
ابعاد ناسازگار داشته باشند چه اتفاقی میافتد؟
اگر ابعاد آرایهها با قوانین Broadcasting سازگار نباشند، NumPy خطای ValueError برمیگرداند. برای جلوگیری از این مشکل، مطمئن شوید که آرایهها ابعاد قابل مقایسه دارند یا از Broadcasting به درستی استفاده کنید. - Broadcasting در NumPy چیست؟
یک قابلیت که امکان عملیات بین آرایههایی با ابعاد متفاوت را فراهم میکند.
جمع بندی
کتابخانه NumPy با توابع متنوع خود، از جمله max() و maximum()، یکی از ابزارهای ضروری برای پردازش دادههای عددی در پایتون محسوب میشود. این توابع به شما کمک میکنند تا بزرگترین و بالاترین مقدار را در آرایهها پیدا کرده و دادههای پیچیده را سادهتر تحلیل کنید.
اگر قصد دارید پروژههای خود را سریعتر و کارآمدتر پیش ببرید، یادگیری و استفاده از این ابزارها میتواند یک گام بزرگ در جهت حرفهای شدن باشد. حالا نوبت شماست که این توابع را در پروژههای خود به کار ببرید و از قدرت NumPy بهرهمند شوید!
همچنین برای یادگیری گام به گام زبان پایتون به صفحه آموزش زبان پایتون در آکادمی برنامه نویسی محسن مدحج مراجعه کنید.