วิธีจัดกลุ่มตัวแปรใน python โดยใช้ numpy.digitize()
บ่อยครั้งที่คุณอาจสนใจที่จะใส่ค่าของตัวแปรลงใน “bins” ใน Python
โชคดีที่ทำได้ง่ายโดยใช้ฟังก์ชัน numpy.digitize() ซึ่งใช้ไวยากรณ์ต่อไปนี้:
numpy.digitize(x, ถังขยะ, ขวา=เท็จ)
ทอง:
- x: อาร์เรย์ต่อกลุ่ม
- ถังขยะ: อาร์เรย์ของถังขยะ
- ขวา: ระบุว่าช่วงต่างๆ รวมขอบด้านขวาหรือด้านซ้ายของถังขยะด้วย ตามค่าเริ่มต้น ช่วงเวลาจะไม่รวมขอบด้านขวา
บทช่วยสอนนี้แสดงตัวอย่างการใช้งานฟังก์ชันนี้ในทางปฏิบัติหลายตัวอย่าง
ตัวอย่างที่ 1: วางค่าทั้งหมดไว้ในสองถังขยะ
รหัสต่อไปนี้แสดงวิธีวางค่าของอาร์เรย์ลงในสองถัง:
- 0 ถ้า x < 20
- 1 ถ้า x ≥ 20
import numpy as np #create data data = [2, 4, 4, 7, 12, 14, 19, 20, 24, 31, 34] #place values into bins n.p. digitize (data, bins=[20]) array([0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1])
ตัวอย่างที่ 2: ใส่ค่าทั้งหมดลงในสามถังขยะ
รหัสต่อไปนี้แสดงวิธีวางค่าของอาร์เรย์ลงในสามถัง:
- 0 ถ้า x < 10
- 1 ถ้า 10 ≤ x < 20
- 2 ถ้า x ≥ 20
import numpy as np #create data data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34] #place values into bins n.p. digitize (data, bins=[10, 20]) array([0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2])
โปรดทราบว่าหากเราระบุ right= True ค่าต่างๆ จะถูกวางไว้ในช่องต่อไปนี้:
- 0 ถ้า x ≤ 10
- 1 ถ้า 10 < x ≤ 20
- 2 ถ้า x > 20
แต่ละช่วงจะรวมขอบด้านขวาของถังขยะด้วย นี่คือสิ่งที่ดูเหมือน:
import numpy as np #createdata data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34] #place values into bins n.p. digitize (data, bins=[10, 20], right= True ) array([0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2])
ตัวอย่างที่ 3: วางค่าทั้งหมดลงในสี่ถังขยะ
รหัสต่อไปนี้แสดงวิธีวางค่าของอาร์เรย์ลงในสามถัง:
- 0 ถ้า x < 10
- 1 ถ้า 10 ≤ x < 20
- 2 ถ้า 20 ≤ x < 30
- 3 ถ้า x ≥ 30
import numpy as np #createdata data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34] #place values into bins n.p. digitize (data, bins=[10, 20, 30]) array([0, 0, 0, 0, 1, 1, 2, 2, 2, 3, 3])
ตัวอย่างที่ 4: นับความถี่ของแต่ละถัง
ฟังก์ชัน NumPy ที่มีประโยชน์อีกฟังก์ชันหนึ่งที่เข้ามาเสริมฟังก์ชัน numpy.digitize() คือฟังก์ชัน numpy.bincount() ซึ่งนับความถี่ของแต่ละ bin
รหัสต่อไปนี้แสดงวิธีวางค่าของอาร์เรย์เป็น 3 กลุ่ม จากนั้นนับความถี่ของแต่ละกลุ่ม:
import numpy as np #createdata data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34] #place values into bins bin_data = np. digitize (data, bins=[10, 20]) #view binned data bin_data array([0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2]) #count frequency of each bin n.p. bincount (bin_data) array([4, 2, 5])
ผลลัพธ์บอกเราว่า:
- Bin “0” มีค่าข้อมูล 4 ค่า
- Bin “1” มีข้อมูล 2 ค่า
- Bin “2” มีข้อมูล 5 ค่า
ค้นหาบทช่วยสอน Python เพิ่มเติมได้ ที่นี่