วิธีจัดกลุ่มตัวแปรใน 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 เพิ่มเติมได้ ที่นี่

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

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