از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
حل خطاهای عدم تطابق شکل در پایتون
سرفصلهای مطلب
معرفی
در برخی مواقع هنگام کار با آرایه ها و لیست ها در پایتون، ممکن است هنگام تلاش برای انجام عملیات خاصی با “خطای عدم تطابق شکل” مواجه شده باشید. این خطا یک مانع رایج برای بسیاری از برنامه نویسان پایتون است.
در این بایت، بررسی خواهیم کرد که این خطا چیست، چرا رخ می دهد، و چگونه آن را با استفاده از برش لیست و پخش صحیح آرایه در NumPy برطرف کنیم.
خطای عدم تطابق شکل
یک خطای عدم تطابق شکل معمولاً زمانی اتفاق میافتد که میخواهید عملیات را انجام دهید روی آرایه ها یا لیست هایی از اشکال یا ابعاد مختلف. کتابخانه NumPy پایتون برای مدیریت آرایه ها با هر بعد طراحی شده است. با این حال، زمانی که می خواهید عملیات را انجام دهید روی آرایه هایی با اشکال مختلف، پایتون یک خطای عدم تطابق شکل ایجاد می کند.
به عنوان مثال، کد زیر را در نظر بگیرید:
import numpy as np
a = np.array((1, 2, 3))
b = np.array(((1, 2, 3), (4, 5, 6)))
c = a + b
هنگامی که این کد را اجرا می کنید، پایتون با خطای زیر مواجه می شود:
ValueError: operands could not be broadcast together with shapes (3,) (2,3)
این به این دلیل است که دو آرایه a
و b
اشکال مختلفی دارند و به همین دلیل پایتون قادر به انجام عملیات جمع نیست.
رفع خطا با برش لیست
یکی از راههای رفع خطای عدم تطابق شکل، استفاده از آن است برش لیست. برش لیست در پایتون به شما امکان می دهد با تعیین مقادیر شروع، توقف و مرحله، یک لیست جدید از لیست موجود ایجاد کنید.
به مثال زیر توجه کنید:
import numpy as np
a = np.array((1, 2, 3))
b = np.array(((1, 2, 3), (4, 5, 6)))
c = a + b(0)
در این مورد، ما آن را برش می دهیم b
آرایه و فقط از سطر اول برای عملیات جمع استفاده می کند. وقتی این کد را اجرا می کنید، پایتون عملیات را با موفقیت انجام می دهد و خروجی زیر را می دهد:
array((2, 4, 6))
پخش آرایه صحیح در NumPy
راه دیگر برای حل خطای عدم تطابق شکل، پخش صحیح آرایه های خود در NumPy است. Broadcasting قابلیتی است که به NumPy اجازه می دهد هنگام انجام عملیات حسابی با آرایه هایی با اشکال مختلف کار کند.
به مثال زیر توجه کنید:
import numpy as np
a = np.array((1, 2, 3))
b = np.array((1, 2, 3))
c = a(:, np.newaxis) + b
در این مورد، ما یک محور جدید به آن اضافه می کنیم a
آرایه با استفاده از np.newaxis
. این تغییر شکل می دهد a
به (3، 1)، که میکند مطابق شکل b
. هنگامی که این کد را اجرا می کنید، پایتون عملیات را با موفقیت انجام می دهد و خروجی مورد انتظار را می دهد:
array(((2, 3, 4),
(3, 4, 5),
(4, 5, 6)))
نتیجه
درک و رفع خطاهای عدم تطابق شکل در پایتون هنگام کار با آرایه ها و لیست ها مهم است. در این بایت توضیح دادیم که این خطاها چیست، چرا رخ می دهد و چگونه آنها را با استفاده از برش لیست و پخش صحیح آرایه در NumPy برطرف کنیم.
(برچسبها به ترجمه)# python
منتشر شده در 1402-12-29 21:29:05