วิธีแก้ไข: วัตถุ 'numpy.ndarray' ไม่มีแอตทริบิวต์ 'index'


ข้อผิดพลาดที่คุณอาจพบเมื่อใช้ NumPy คือ:

 AttributeError : 'numpy.ndarray' object has no attribute 'index'

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามใช้ฟังก์ชัน index() บนอาร์เรย์ NumPy ซึ่งไม่มีแอตทริบิวต์ดัชนีที่พร้อมใช้งาน

ตัวอย่างต่อไปนี้แสดงวิธีการแก้ไขข้อผิดพลาดนี้ในทางปฏิบัติ

วิธีการทำซ้ำข้อผิดพลาด

สมมติว่าเรามีอาร์เรย์ NumPy ดังต่อไปนี้:

 import numpy as np

#create NumPy array
x = np. array ([4, 7, 3, 1, 5, 9, 9, 15, 9, 18])

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อค้นหาค่าต่ำสุดและสูงสุดในอาร์เรย์:

 #find minimum and maximum values of array
min_val = np. min (x)
max_val = np. max (x)

#print minimum and maximum values
print (min_val, max_val)

1 18

ตอนนี้สมมติว่าเรากำลังพยายามค้นหาตำแหน่งดัชนีของค่าต่ำสุดและค่าสูงสุดในอาร์เรย์:

 #attempt to print index position of minimum value
x. index (min_val)

AttributeError : 'numpy.ndarray' object has no attribute 'index'

เราได้รับข้อผิดพลาดเนื่องจากเราไม่สามารถนำฟังก์ชัน index() ไปใช้กับอาร์เรย์ NumPy ได้

วิธีแก้ไขข้อผิดพลาด

หากต้องการค้นหาตำแหน่งดัชนีของค่าต่ำสุดและสูงสุดในอาร์เรย์ NumPy เราสามารถใช้ฟังก์ชัน NumPywhere () ได้:

 #find index position of minimum value
n.p. where (x == min_val)

(array([3]),)

#find index position of maximum value
n.p. where (x == max_val)

(array([9]),)

จากผลลัพธ์เราจะเห็นได้ว่า:

  • ค่าต่ำสุดของอาร์เรย์อยู่ที่ตำแหน่งดัชนี 3
  • ค่าสูงสุดของอาร์เรย์อยู่ที่ตำแหน่งดัชนี 9

เราสามารถใช้ไวยากรณ์ทั่วไปเดียวกันนี้เพื่อค้นหาตำแหน่งดัชนีของค่าใดๆ ในอาร์เรย์ NumPy

ตัวอย่างเช่น เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อค้นหาตำแหน่งดัชนีที่เท่ากับค่า 9 ในอาร์เรย์ NumPy:

 #find index positions that are equal to the value 9
n.p. where (x == 9 )

(array([5, 6, 8]),)

จากผลลัพธ์เราจะเห็นว่าค่าที่ตำแหน่งดัชนี 5, 6 และ 8 มีค่าเท่ากับ 9 ทั้งหมด

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่นๆ ใน Python:

วิธีแก้ไข KeyError ใน Pandas
วิธีแก้ไข: ValueError: ไม่สามารถแปลง float NaN เป็น int
วิธีแก้ไข: ValueError: ตัวถูกดำเนินการไม่สามารถออกอากาศด้วยรูปร่างได้

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

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