วิธีแก้ไข: 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

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *