6
ความแตกต่างระหว่างรูปร่างของ numpy.array (R, 1) และ (R,)
ในnumpyการดำเนินการ(R, 1)บางอย่างกลับมาเป็นรูปร่างแต่กลับมา(R,)บ้าง สิ่งนี้จะทำให้การคูณเมทริกซ์น่าเบื่อมากขึ้นเนื่องจากreshapeจำเป็นต้องใช้อย่างชัดเจน ตัวอย่างเช่นได้รับเมทริกซ์Mถ้าเราต้องการที่จะทำnumpy.dot(M[:,0], numpy.ones((1, R)))ที่ไหนRจำนวนแถว (แน่นอนปัญหาเดียวกันยังเกิดขึ้นคอลัมน์ฉลาด) เราจะได้รับmatrices are not alignedข้อผิดพลาดตั้งแต่M[:,0]อยู่ในรูปร่าง(R,)แต่อยู่ในรูปnumpy.ones((1, R))(1, R) ดังนั้นคำถามของฉันคือ: ความแตกต่างระหว่างรูปร่าง(R, 1)กับ(R,)อะไร ฉันรู้ว่ามันคือรายการของตัวเลขและรายการที่ทุกรายการมีเพียงตัวเลข เพียงแค่สงสัยว่าทำไมไม่ออกแบบnumpyเพื่อให้เหมาะกับรูปร่าง(R, 1)แทน(R,)การคูณเมทริกซ์ที่ง่ายขึ้น มีวิธีที่ดีกว่าสำหรับตัวอย่างข้างต้นหรือไม่ โดยไม่มีการปรับรูปร่างอย่างชัดเจน:numpy.dot(M[:,0].reshape(R, 1), numpy.ones((1, R)))