วิธีสั่งซื้อองค์ประกอบในอาร์เรย์ 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 เป็นอาร์เรย์