วิธีแก้ไข: typeerror: ไม่สามารถลดด้วยประเภทที่ยืดหยุ่นได้


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

 ValueError : cannot perform reduce with flexible type

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามคำนวณวัตถุใน Python ที่ไม่ใช่ตัวเลข

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

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

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

 import numpy as np

#define NumPy array of values
data = np. array (['1', '2', '3', '4', '7', '9', '10', '12'])

#attempt to calculate median of values
n.p. median (data)

TypeError : cannot perform reduce with flexible type

เราได้รับ TypeError เนื่องจากเราพยายามคำนวณค่ามัธยฐานของรายการค่าสตริง

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

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

รหัสต่อไปนี้แสดงวิธีการทำเช่นนี้:

 #convert NumPy array of string values to float values
data_new = data. astype (float)

#view updated NumPy array
data_new

array([ 1., 2., 3., 4., 7., 9., 10., 12.])

#check data type of array
data_new. dtype

dtype('float64')

ตอนนี้เราสามารถดำเนินการทางคณิตศาสตร์บนอาร์เรย์ NumPy ได้:

 #calculate median value of array
n.p. median (data_new)

5.5

#calculate mean value of array
n.p. mean (data_new)

6.0

#calculate max value of array
n.p. max (data_new)

12.0

โปรดทราบว่าเราไม่ได้รับข้อผิดพลาดใดๆ เนื่องจากอาร์เรย์ NumPy เป็นวัตถุ float ซึ่งหมายความว่าเราสามารถดำเนินการทางคณิตศาสตร์กับอาร์เรย์นั้นได้

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

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

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

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

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