วิธีแก้ไข: เฉพาะอาร์เรย์ขนาด 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: ตัวถูกดำเนินการไม่สามารถออกอากาศด้วยรูปร่างได้