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

Python Redistribute Trimmed Values (ปรับกระจายค่าหลังตัดขอบ)

แนวคิด

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

ตัวอย่างโค้ด

my_list = [11, 26, 24, 75, 96, 37, 48, 29, 93]
print("ลิสต์ต้นฉบับ:", my_list)

key = 2
print("ค่า K:", key)

full_sum = sum(my_list)
trimmed_list = my_list[key:len(my_list) - key]  # ตัด 2 หน้า 2 หลัง
trim_sum = sum(trimmed_list)

# ค่าที่ต้องเพิ่มเข้าแต่ละตัวใน trimmed_list
add_value = (full_sum - trim_sum) / len(trimmed_list)

result = [ele + add_value for ele in trimmed_list]
print("ผลลัพธ์:", result)

ผลลัพธ์

ลิสต์ต้นฉบับ: [11, 26, 24, 75, 96, 37, 48, 29, 93]
ค่า K: 2
ผลลัพธ์: [55.8, 106.8, 127.8, 68.8, 79.8]

คำอธิบายขั้นตอน

  1. full_sum = 439 (ผลรวมทั้งหมด)
  2. trimmed_list = [24, 75, 96, 37, 48] (index 2 ถึง 6)
  3. trim_sum = 280
  4. add_value = (439 - 280) / 5 = 31.8
  5. บวก 31.8 เข้าแต่ละตัวใน trimmed_list

การประยุกต์

ใช้ในสถิติ trimmed mean หรือ winsorizing ที่ต้องการรักษาผลรวมรวมไว้แต่ลดผลของค่าคיצוניים (outliers)