วิธีสั่งซื้อองค์ประกอบในอาร์เรย์ numpy (พร้อมตัวอย่าง)


คุณสามารถใช้วิธีใดๆ ต่อไปนี้เพื่อคำนวณการเรียงลำดับองค์ประกอบในอาร์เรย์ NumPy:

วิธีที่ 1: ใช้ argsort() จาก NumPy

 import numpy as np

ranks = np. array (my_array). argsort (). argsort ()

วิธีที่ 2: ใช้ Rankdata ของ SciPy ()

 from scipy. stats import rankdata

ranks = rankdata(my_array)

ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติกับอาร์เรย์ NumPy ต่อไปนี้:

 import numpy as np

#define array of values
my_array = np. array ([3, 5, 2, 1, 9, 9])

#view array
print (my_array)

[3 5 2 1 9 9]

ตัวอย่างที่ 1: จัดเรียงองค์ประกอบในอาร์เรย์ NumPy โดยใช้ argsort()

รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชัน argsort() ของ NumPy เพื่อจัดเรียงองค์ประกอบอาร์เรย์:

 #calculate rank of each item in array
ranks = np. array (my_array). argsort (). argsort ()

#view ranks
print (ranks)

[2 3 1 0 4 5]

ผลลัพธ์จะแสดงอันดับของแต่ละองค์ประกอบในอาร์เรย์ดั้งเดิม โดยที่ 0 แสดงถึงค่าต่ำสุด

ข้อดีของวิธีนี้คือคุณไม่จำเป็นต้องโหลดโมดูลเพิ่มเติมใดๆ แต่ข้อเสียคือ argsort() มีเพียงวิธีเดียวในการจัดการลิงก์

ตามค่าเริ่มต้น argsort() ใช้วิธีการเรียงลำดับเพื่อจัดการลิงก์ ซึ่งหมายความว่าค่าที่เชื่อมโยงที่ปรากฏก่อนจะได้รับอันดับที่ต่ำกว่าโดยอัตโนมัติ

ตัวอย่างที่ 2: องค์ประกอบอันดับในอาร์เรย์ NumPy โดยใช้ Rankdata()

รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชัน Rankdata() ของ SciPy เพื่อจัดอันดับองค์ประกอบอาร์เรย์:

 from scipy. stats import rankdata

#calculate rank of each item in array
ranks = rankdata(my_array)

#view ranks
print (ranks)

array([3. , 4. , 2. , 1. , 5.5, 5.5])

ผลลัพธ์จะแสดงอันดับของแต่ละองค์ประกอบในอาร์เรย์ดั้งเดิม โดยที่ 1 แสดงถึงค่าที่น้อยที่สุด

หากคุณต้องการให้ 0 แทนค่าที่น้อยที่สุด ให้ลบ 1 ออกจากแต่ละค่า:

 from scipy. stats import rankdata

#calculate rank of each item in array
ranks = rankdata(my_array) - 1

#view ranks
print (ranks)

[2. 3. 1. 0. 4.5 4.5]

ตามค่าเริ่มต้น ฟังก์ชัน Rankdata() จะกำหนดอันดับเฉลี่ยให้กับค่าทั้งหมดที่มีความสัมพันธ์กัน

อย่างไรก็ตาม คุณสามารถใช้อาร์กิวเมนต์ method เพื่อจัดการลิงก์ด้วยวิธีอื่นได้

ตัวอย่างเช่น รหัสต่อไปนี้แสดงวิธีใช้ ลำดับ เป็นวิธีการจัดการลิงก์:

 from scipy. stats import rankdata

#calculate rank of each item in array
ranks = rankdata(my_array, method=' ordinal ') - 1

#view ranks
print (ranks)

[2 3 1 0 4 5]

สิ่งนี้ให้ผลลัพธ์เช่นเดียวกับ เมธอด argsort() ของ NumPy

วิธีการจัดการลิงก์อื่นๆ ได้แก่ ค่าต่ำ สุด สูงสุด และ หนาแน่น

เรียนรู้เกี่ยวกับแต่ละวิธีใน เอกสารประกอบของ SciPy

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

บทช่วยสอนต่อไปนี้จะอธิบายวิธีทำงานทั่วไปอื่น ๆ ใน NumPy:

วิธีลบองค์ประกอบที่ซ้ำกันออกจากอาร์เรย์ NumPy
วิธีแปลงอาร์เรย์ NumPy ของการลอยเป็นจำนวนเต็ม
วิธีแปลงเมทริกซ์ NumPy เป็นอาร์เรย์

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

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