วิธีแก้ไข: เฉพาะอาร์เรย์ขนาด 1 เท่านั้นที่จะแปลงเป็นสเกลาร์ python ได้


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

 TypeError : only size-1 arrays can be converted to Python scalars

ข้อผิดพลาดนี้เกิดขึ้นบ่อยที่สุดเมื่อพยายามใช้ np.int() เพื่อแปลงอาร์เรย์ NumPy ของค่า float ให้เป็นอาร์เรย์ของค่าจำนวนเต็ม

อย่างไรก็ตาม ฟังก์ชันนี้ยอมรับเฉพาะค่าเดียวแทนที่จะเป็นอาร์เรย์ของค่า

คุณควรใช้ x.astype(int) เพื่อแปลงอาร์เรย์ NumPy ของค่า float ไปเป็นอาร์เรย์ของค่าจำนวนเต็ม เนื่องจากฟังก์ชันนี้สามารถรับอาร์เรย์ได้

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

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

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

 import numpy as np

#create NumPy array of float values
x = np. array ([3, 4.5, 6, 7.7, 9.2, 10, 12, 14.1, 15])

ตอนนี้สมมติว่าเราพยายามแปลงอาร์เรย์ของค่าทศนิยมนี้เป็นอาร์เรย์ของค่าจำนวนเต็ม:

 #attempt to convert array to integer values
n.p. int (x)

TypeError : only size-1 arrays can be converted to Python scalars 

เราได้รับ TypeError เนื่องจากฟังก์ชัน np.int() ยอมรับเฉพาะค่าเดียวเท่านั้น ไม่ใช่อาร์เรย์ของค่า

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

ในการแปลงอาร์เรย์ NumPy ของค่า float เป็นค่าจำนวนเต็ม เราสามารถใช้โค้ดต่อไปนี้:

 #convert array of float values to integer values
x. astype (int)

array([ 3, 4, 6, 7, 9, 10, 12, 14, 15])

โปรดทราบว่าอาร์เรย์ของค่าถูกแปลงเป็นจำนวนเต็มและเราไม่ได้รับข้อผิดพลาดใดๆ เนื่องจากฟังก์ชัน astype() สามารถจัดการอาร์เรย์ของค่าได้

หมายเหตุ : คุณสามารถดูเอกสารฉบับเต็มสำหรับฟังก์ชัน astype() ได้ที่นี่

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

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

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

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

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