Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python AttributeError:วัตถุ 'numpy.ndarray' ไม่มีแอตทริบิวต์ 'ผนวก' โซลูชัน

ใน Python ปกติ คุณสามารถใช้ append() วิธีการเพิ่มรายการต่อท้ายรายการ คุณไม่สามารถใช้วิธีนี้ใน NumPy หากคุณลองใช้ Python append() วิธีการเพิ่มรายการต่อท้ายอาร์เรย์ NumPy คุณจะเห็น AttributeError: ‘numpy.ndarray’ object has no attribute ‘append’ ข้อผิดพลาด.

คู่มือนี้จะอธิบายรายละเอียดสาเหตุและวิธีแก้ปัญหาข้อผิดพลาด NumPy นี้ เราจะอ้างอิงถึงตัวอย่างเพื่อแสดงวิธีการแก้ไขข้อผิดพลาดนี้ มาเริ่มกันเลย

AttributeError:วัตถุ 'numpy.ndarray' ไม่มีแอตทริบิวต์ 'ผนวก'

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 ปกติ

มาดูตัวอย่างของข้อผิดพลาดนี้กัน

81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้

ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก

ตัวอย่างสถานการณ์

เรากำลังสร้างแอปพลิเคชันที่ติดตามเกรดประสิทธิภาพที่ผลิตภัณฑ์ได้รับหลังจากการประกันคุณภาพที่โรงงาน ผลิตภัณฑ์ได้รับคะแนนในระดับ 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, in <module>
	scores.append(to_add)
AttributeError: 'numpy.ndarray' object has no attribute 'append'

รหัสของเราส่งคืนข้อผิดพลาด

การแก้ปัญหา

เรากำลังพยายามใช้ Python append() . ปกติ วิธีการเพิ่มรายการในอาร์เรย์ 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 ในคำสั่งนำเข้าของเรา เราส่งรายการที่เราต้องการเพิ่มรายการเป็นอาร์กิวเมนต์แรกของเรา คะแนนใหม่ที่จะเพิ่มลงในอาร์เรย์ของเราคืออาร์กิวเมนต์ที่สองของเรา

เราต้องกำหนดผลลัพธ์ของ np.append() . ของเรา การดำเนินการไปสู่ค่าใหม่ ทั้งนี้เป็นเพราะ np.append() ไม่แก้ไขอาร์เรย์ที่มีอยู่ วิธีสร้างอาร์เรย์ใหม่ด้วยค่าใหม่ของคุณที่เพิ่มเข้ามาแทน

เรียกใช้โปรแกรมของเราและดูว่าเกิดอะไรขึ้น:

[49 48 49 47 42 48 46 50 49]

เพิ่มหมายเลข 49 ลงท้ายรายการเรียบร้อยแล้ว

บทสรุป

AttributeError: ‘numpy.ndarray’ object has no attribute ‘append’ ข้อผิดพลาดระบุว่าคุณกำลังใช้ Python append() . ปกติ วิธีการเพิ่มรายการในอาร์เรย์ NumPy คุณควรใช้ numpy.append() . แทน เมธอด ซึ่งใช้ไวยากรณ์:numpy.append(list, item_to_add) วิธีนี้จะสร้างรายการใหม่โดยเพิ่มรายการที่ระบุในตอนท้าย

คุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการเข้ารหัสใน NumPy หรือไม่? ดูคู่มือวิธีการเรียนรู้ NumPy ของเรา คู่มือนี้มีเคล็ดลับยอดนิยมเกี่ยวกับวิธีสร้างความรู้เกี่ยวกับ NumPy ควบคู่ไปกับรายการแหล่งข้อมูลการเรียนรู้ที่เหมาะสำหรับนักพัฒนาระดับเริ่มต้นและระดับกลาง