Python AttributeError: 'numpy.ndarray' object has no attribute 'append' - แก้ไขอย่างไร?
ใน Python ธรรมดา คุณสามารถใช้เมธอด append() เพิ่มไอเทมไปท้ายลิสต์ คุณไม่สามารถใช้เมธอดนี้ใน NumPy ได้ หากคุณพยายามใช้ append() ของ Python เพิ่มไอเทมไปท้ายอาร์เรย์ NumPy คุณจะเห็นข้อผิดพลาด AttributeError: 'numpy.ndarray' object has no attribute 'append'
คู่มือนี้อธิบายรายละเอียดสาเหตุและวิธีแก้ไขข้อผิดพลาด NumPy นี้ เราจะอ้างอิงตัวอย่างประกอบการแก้ไข มาเริ่มกัน
AttributeError: 'numpy.ndarray' object has no attribute 'append'
ข้อผิดพลาด AttributeError: 'numpy.ndarray' object has no attribute 'append' เกิดจากการใช้เมธอด append() เพิ่มไอเทมไปยังอาร์เรย์ NumPy คุณควรใช้เมธอด numpy.append() แทน หากต้องการเพิ่มไอเทมไปยังลิสต์
เมธอด numpy.append() เขียนขึ้นมาเฉพาะสำหรับไลบรารี NumPy อาร์เรย์ NumPy ต่างจากอาร์เรย์ Python ธรรมดา จึงสมเหตุสมผลที่ NumPy มีเมธอดของตัวเองสำหรับเพิ่มไอเทมไปยังอาร์เรย์
เมธอด numpy.append() ใช้ไวยากรณ์นี้:
numpy.append(list_to_add_item, item_to_add)
สองพารามิเตอร์ที่เราจะเน้น:
- list_to_add_item: ลิสต์ที่คุณต้องการเพิ่มไอเทม
- item_to_add: ไอเทมที่คุณต้องการเพิ่มไปยังลิสต์ที่ระบุ
เมธอด numpy.append() คืนอาร์เรย์ใหม่ที่มีไอเทมที่ระบุอยู่ท้าย โดยอิงจากอาร์เรย์ "list_to_add_item" โปรดทราบว่าคุณไม่ใส่ append() หลังลิสต์ที่ต้องการเพิ่มไอเทม เหมือน Python ธรรมดา
มาเดินทางผ่านตัวอย่างข้อผิดพลาดนี้
สถานการณ์ตัวอย่าง
เรากำลังสร้างแอปพลิเคชันติดตามเกรดประสิทธิภาพที่ผลิตภัณฑ์ได้รับหลังการประกันคุณภาพที่โรงงาน ผลิตภัณฑ์ได้คะแนนมาตราส่วน 50 และทุกผลิตภัณฑ์ต้องทำคะแนนอย่างน้อย 40 เพื่อออกสู่ตลาด
เรากำลังสร้างส่วนของแอปพลิเคชันที่เพิ่มคะแนนใหม่ไปยังอาร์เรย์ที่จัดเก็บคะแนนที่ผลิตภัณฑ์ได้รับในวันล่าสุด เพื่อสร้างโปรแกรมนี้ เราสามารถใช้เมธอด append():
import numpy as np scores = np.array([49, 48, 49, 47, 42, 48, 46, 50]) to_add = 49 scores.append(to_add) print(scores)
โปรแกรมของเราเพิ่มคะแนน 39 ไปยังลิสต์คะแนน ในสถานการณ์จริง เราอาจอ่านคะแนนเหล่านี้จากไฟล์ แต่เพื่อให้ตัวอย่างง่าย เราประกาศอาร์เรย์ในโปรแกรม โค้ดพิมพ์รายการคะแนนทั้งหมดไปคอนโซล Python หลังคะแนนใหม่ถูกเพิ่มเข้าไปในอาร์เรย์คะแนน
มารันโค้ดและดูเกิดอะไรขึ้น:
Traceback (most recent call last): File "test.py", line 6, inscores.append(to_add) AttributeError: 'numpy.ndarray' object has no attribute 'append'
โค้ดคืนข้อผิดพลาด
วิธีแก้ไข (The Solution)
เรากำลังพยายามใช้เมธอด append() ของ Python ธรรมดา เพิ่มไอเทมไปยังอาร์เรย์ NumPy แทนที่จะใช้ numpy.append() ที่สร้างขึ้นมาเฉพาะ
เพื่อแก้ไขข้อผิดพลาดนี้ เราต้องใช้ไวยากรณ์ของเมธอด numpy.append():
import numpy as np scores = np.array([49, 48, 49, 47, 42, 48, 46, 50]) scores = np.append(scores, 49) print(scores)
เราใช้คำว่า np อ้างถึงไลบรารี NumPy เนื่องจากเรากำหนดไลบรารี numpy เป็น np ในคำสั่ง import เราส่งลิสต์ที่ต้องการเพิ่มไอเทมเป็นอาร์กิวเมนต์แรก คะแนนใหม่ที่จะเพิ่มเข้าไปในอาร์เรย์เป็นอาร์กิวเมนต์ที่สอง
เราต้องกำหนดผลลัพธ์ของการดำเนินการ np.append() ให้ค่าใหม่ เพราะ np.append() ไม่แก้ไขอาร์เรย์ที่มีอยู่ แทนที่จะเป็นเมธอดสร้างอาร์เรย์ใหม่พร้อมค่าใหม่เพิ่มท้าย
มารันโปรแกรมและดูเกิดอะไร:
[49 48 49 47 42 48 46 50 49]
หมายเลข 49 ถูกเพิ่มท้ายลิสต์ของเราสำเร็จแล้ว
สรุป
ข้อผิดพลาด AttributeError: 'numpy.ndarray' object has no attribute 'append' บ่งชี้ว่าคุณใช้ append() ของ Python ธรรมดา เพิ่มไอเทมไปยังอาร์เรย์ NumPy แทนที่ควรใช้ numpy.append() ซึ่งใช้ไวยากรณ์: numpy.append(list, item_to_add) เมธอดนี้สร้างลิสต์ใหม่พร้อมไอเทมที่ระบุเพิ่มท้าย
ต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโค้ดใน NumPy? ดูคู่มือ How to Learn NumPy ของเรา คู่มือนี้มีเคล็ดลับชั้นนำสร้างความรู้ NumPy พร้อมรายการแหล่งทรัพยากรการเรียนรู้สำหรับนักพัฒนาระดับเริ่มต้นและกลาง