วิธีแก้ไข: valueerror: ตัวถูกดำเนินการไม่สามารถออกอากาศด้วยรูปร่างได้
ข้อผิดพลาดที่คุณอาจพบเมื่อใช้ Python คือ:
ValueError : operands could not be broadcast together with shapes (2,2) (2,3)
ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามทำการคูณเมทริกซ์โดยใช้เครื่องหมายคูณ ( * ) ใน Python แทนฟังก์ชัน numpy.dot()
ตัวอย่างต่อไปนี้แสดงวิธีการแก้ไขข้อผิดพลาดนี้ในแต่ละสถานการณ์
วิธีการทำซ้ำข้อผิดพลาด
สมมติว่าเรามีเมทริกซ์ C ขนาด 2×2 ซึ่งมี 2 แถวและ 2 คอลัมน์:

สมมติว่าเรามีเมทริกซ์ D ขนาด 2×3 ซึ่งมี 2 แถวและ 3 คอลัมน์:

ต่อไปนี้เป็นวิธีคูณเมทริกซ์ C ด้วยเมทริกซ์ D:

ผลลัพธ์ที่ได้คือเมทริกซ์ต่อไปนี้:

สมมติว่าเราพยายามทำการคูณเมทริกซ์ใน Python โดยใช้เครื่องหมายคูณ (*) ดังนี้:
import numpy as np #define matrices C = np. array ([7, 5, 6, 3]). reshape (2, 2) D = np. array ([2, 1, 4, 5, 1, 2]). reshape (2, 3) #print dies print (C) [[7 5] [6 3]] print (D) [[2 1 4] [5 1 2]] #attempt to multiply two matrices together CD ValueError: operands could not be broadcast together with shapes (2,2) (2,3)
เราได้รับ ValueError เราสามารถอ้างถึง เอกสาร NumPy เพื่อทำความเข้าใจว่าเหตุใดเราจึงได้รับข้อผิดพลาดนี้:
เมื่อทำงานกับสองอาร์เรย์ NumPy จะเปรียบเทียบองค์ประกอบรูปร่างตามองค์ประกอบ เริ่มต้นด้วยมิติสุดท้าย (เช่น ขวาสุด) และเคลื่อนไปทางซ้าย สองมิติเข้ากันได้เมื่อ
- พวกเขาเท่าเทียมกันหรือ
- หนึ่งในนั้นคือ 1
หากไม่ตรงตามเงื่อนไขเหล่านี้ จะมี ข้อผิดพลาด ValueError: Operands ไม่สามารถออกอากาศพร้อมกันได้ ซึ่งบ่งชี้ว่าอาร์เรย์มีรูปร่างที่เข้ากันไม่ได้
เนื่องจากเมทริกซ์สองตัวของเราไม่มีค่าเท่ากันสำหรับมิติสุดท้าย (เมทริกซ์ C มีมิติสุดท้ายเป็น 2 และเมทริกซ์ D มีมิติสุดท้ายเป็น 3) เราจึงได้รับข้อผิดพลาด
วิธีการแก้ไขข้อผิดพลาด
วิธีที่ง่ายที่สุดในการแก้ไขข้อผิดพลาดนี้คือใช้ฟังก์ชัน numpy.dot() เพื่อทำการคูณเมทริกซ์:
import numpy as np #define matrices C = np. array ([7, 5, 6, 3]). reshape (2, 2) D = np. array ([2, 1, 4, 5, 1, 2]). reshape (2, 3) #perform matrix multiplication C. dowry (D) array([[39, 12, 38], [27, 9, 30]])
โปรดทราบว่าเราหลีกเลี่ยง ValueError และจัดการเพื่อคูณเมทริกซ์ทั้งสองได้สำเร็จ
โปรดทราบว่าผลลัพธ์ตรงกับผลลัพธ์ที่เราคำนวณด้วยตนเองก่อนหน้านี้
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่นๆ ใน Python:
วิธีแก้ไข: คอลัมน์ซ้อนทับกันแต่ไม่ได้ระบุส่วนต่อท้าย
วิธีแก้ไข: วัตถุ ‘numpy.ndarray’ ไม่มีแอตทริบิวต์ ‘ผนวก’
วิธีแก้ไข: หากใช้ค่าสเกลาร์ทั้งหมด คุณจะต้องผ่านดัชนี
วิธีแก้ไข: ValueError: ไม่สามารถแปลง float NaN เป็น int