Chính thức, trung vị là “giá trị phân tách nửa trên với nửa dưới của mẫu dữ liệu” [wiki]
Lưu ý rằng giá trị trung bình khác với giá trị trung bình hoặc giá trị trung bình như có thể thấy trong hình sau
Nếu có một số chẵn phần tử trong danh sách [i. e. , len[list]%2==0
], không có phần tử ở giữa. Trong trường hợp này, trung vị có thể là trung bình cộng của hai phần tử ở giữa
Phương pháp 1. số liệu thống kê. Trung bình[]
Cách đơn giản nhất để lấy trung vị của danh sách Python your_list
là nhập thư viện statistics
và gọi statistics.median[your_list]
. Thư viện statistics
được bao gồm trong các thư viện tiêu chuẩn của Python, vì vậy không cần phải cài đặt thủ công
Đây là một ví dụ đơn giản
import statistics def get_median[lst]: return statistics.median[lst] odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 2.5
Chúng tôi tạo hai danh sách
- 3 là trung vị của danh sách [3, 2, 4, 7, 1] như có thể thấy trong biểu diễn được sắp xếp [1, 2, 3, 4, 7]
- 2. 5 là trung vị của danh sách [3, 2, 4, 7, 1, 1] như có thể thấy trong biểu diễn được sắp xếp [1, 1, 2, 3, 4, 7] và [2+3]/2 là . 5
Phương pháp 2. Không có phương pháp tiếp cận thư viện
Để lấy trung vị của danh sách Python mà không cần thư viện hỗ trợ, hãy thực hiện ba bước sau
- Sắp xếp danh sách
- Lấy chỉ mục của phần tử giữa bên trái
- Tính trung bình các phần tử ở giữa bên trái và bên phải
Điều này được thực hiện trong ba dòng Python
def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return [tmp[mid] + tmp[-mid-1]] / 2 odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 2.5
1def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return [tmp[mid] + tmp[-mid-1]] / 2 odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 2.5
2def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return [tmp[mid] + tmp[-mid-1]] / 2 odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 2.5
3
Dòng thứ ba chứa trung vị của danh sách Python. Điều này hoạt động cho cả danh sách có số phần tử chẵn và lẻ
Chúng tôi sử dụng lập chỉ mục danh sách phủ định để truy cập phần tử ở giữa bên phải. Nếu danh sách có số lượng phần tử lẻ, chỉ số giữa bên trái và bên phải thực sự giống nhau, trong trường hợp đó, giá trị của phần tử giữa đơn được trả về
Đây là một ví dụ
def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return [tmp[mid] + tmp[-mid-1]] / 2 odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 2.5
Cần lưu ý rằng cách tiếp cận đơn giản là không tính trung bình hai phần tử ở giữa trong trường hợp danh sách có số phần tử chẵn cũng thường là đủ
Phương pháp 3. Phương pháp tiếp cận không có thư viện ngây thơ
Nếu bạn đồng ý trả về phần tử ở giữa đầu tiên khi tìm kiếm trung vị của danh sách có số phần tử chẵn, bạn có thể sử dụng phương pháp sau
- Sắp xếp danh sách
- Lấy chỉ mục của phần tử ở giữa bên trái [trong trường hợp độ dài danh sách là số chẵn] và chỉ mục của phần tử ở giữa đơn [trong trường hợp độ dài của danh sách là số lẻ]
- Trả về trung vị bằng cách truy cập phần tử giữa trong danh sách đã sắp xếp
Đặc biệt, ba dòng trong Python thực hiện công việc
def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return [tmp[mid] + tmp[-mid-1]] / 2 odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 2.5
1def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return [tmp[mid] + tmp[-mid-1]] / 2 odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 2.5
2def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return [tmp[mid] + tmp[-mid-1]] / 2 odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 2.5
6
Biến
def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return [tmp[mid] + tmp[-mid-1]] / 2 odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 2.57 chứa trung vị của danh sách
Đây là một ví dụ
def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return tmp[mid] odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 3
Xin lưu ý rằng đây không nhất thiết là cách thống kê hợp lý để tính trung vị cho một danh sách có số phần tử chẵn
Phương pháp 4. np. Trung bình[]
Bạn có thể lấy trung vị của một danh sách Python your_list
bằng cách nhập thư viện
def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return [tmp[mid] + tmp[-mid-1]] / 2 odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 2.59 và gọi
def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return tmp[mid] odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 30
Đây là một ví dụ đơn giản về cách chúng tôi sử dụng NumPy để tính giá trị trung bình của danh sách Python
import numpy as np def get_median[lst]: return np.median[lst] odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3.0 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 2.5
Chúng tôi tạo hai danh sách
- 3 là trung vị của danh sách [3, 2, 4, 7, 1] như có thể thấy trong biểu diễn được sắp xếp [1, 2, 3, 4, 7]. NumPy chuyển đổi tất cả các đầu ra thành float nếu có thể
- 2. 5 là trung vị của danh sách [3, 2, 4, 7, 1, 1] như có thể thấy trong biểu diễn được sắp xếp [1, 1, 2, 3, 4, 7] và [2+3]/2 là . 5
Đâu là sự khác biệt giữa numpy. trung vị [] và số liệu thống kê. Trung bình[]
Không giống như thư viện statistics
, thư viện
def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return [tmp[mid] + tmp[-mid-1]] / 2 odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 2.59 không có trong các thư viện chuẩn của Python, vì vậy nó phải được cài đặt thủ công nếu bạn chưa cài đặt
Đó là lý do tại sao tôi khuyên bạn nên sử dụng
def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return tmp[mid] odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 33 thay vì
def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return tmp[mid] odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 34 nếu tất cả những gì bạn muốn làm là tính trung bình của danh sách Python
Ngoài ra,
def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return tmp[mid] odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 33 trả về giá trị số nguyên cho danh sách số nguyên có số phần tử lẻ trong khi
def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return tmp[mid] odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 34 luôn trả về số float. Mặt khác, cả hai chức năng đều giống nhau
Hướng dẫn liên quan. Làm cách nào để cài đặt NumPy trong Python?
Phương pháp 5. np. phần trăm []
Một cách tiếp cận tổng quát để tính giá trị trung bình của danh sách
def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return tmp[mid] odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 37 gồm các số là sử dụng hàm
def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return tmp[mid] odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 38 trả về phần trăm chính xác thứ 50 của danh sách. Phần trăm thứ 50 là trung bình
Sự định nghĩa. Phần trăm thứ 50 – Còn được gọi là Trung bình. Trung bình cắt giảm một nửa tập dữ liệu. Một nửa số câu trả lời nằm dưới trung vị và một nửa nằm trên trung vị. [nguồn]
Đây là ví dụ mã
import numpy as np def get_median[lst]: return np.percentile[lst, 50] odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3.0 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 2.5
Phương pháp 6. Python cơ bản trong nhiều dòng
Một cách tiếp cận đơn giản để tìm trung vị của danh sách Python là xử lý các danh sách có kích thước đồng đều và có kích thước kỳ lạ khác nhau sau khi sắp xếp danh sách
- Nếu danh sách có số phần tử lẻ, trả về ngay trung vị bằng cách sử dụng
def get_median[lst]: tmp = sorted[lst] mid = len[tmp] // 2 return tmp[mid] odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 3
9 để lấy chỉ số của phần tử ở giữa - Mặt khác, tính trung bình hai phần tử ở giữa danh sách được sắp xếp
Đây là đoạn mã triển khai phương pháp này - nhận xét để giải thích về các phần có liên quan
def get_median[lst]: l = sorted[lst] mid = len[l] // 2 if len[lst]%2: # list is odd-sized: # single median exists return l[mid] else: # list is evenly-sized: # average two mid values return [l[mid-1]+l[mid]]/2 odd = [3, 2, 4, 7, 1] print[get_median[odd]] # 3.0 even = [3, 2, 4, 7, 1, 1] print[get_median[even]] # 2.5
Video liên quan – Tìm trung vị của danh sách Python
Cách tìm trung vị của một danh sách trong Python HƯỚNG DẪN [Câu hỏi phỏng vấn Python phổ biến]
Xem video này trên YouTube
Đi đâu từ đây?
Đủ lý thuyết. Hãy thực hành một số
Các lập trình viên được trả sáu con số trở lên vì họ có thể giải quyết vấn đề hiệu quả hơn bằng cách sử dụng trí thông minh máy móc và tự động hóa
Để trở nên thành công hơn trong việc viết mã, hãy giải quyết nhiều vấn đề thực tế hơn cho người thực. Đó là cách bạn trau dồi những kỹ năng bạn thực sự cần trong thực tế. Rốt cuộc, việc sử dụng lý thuyết học tập mà không ai cần là gì?
Bạn xây dựng các kỹ năng mã hóa có giá trị cao bằng cách làm việc trên các dự án mã hóa thực tế
Bạn có muốn ngừng học với các dự án đồ chơi và tập trung vào các dự án mã thực tế giúp bạn kiếm tiền và giải quyết các vấn đề thực sự cho mọi người không?
🚀 Nếu câu trả lời của bạn là CÓ. , cân nhắc trở thành nhà phát triển Python tự do. Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện kỹ năng Python của bạn—ngay cả khi bạn là người mới hoàn toàn
Nếu bạn chỉ muốn tìm hiểu về cơ hội làm việc tự do, vui lòng xem hội thảo trên web miễn phí của tôi “Cách xây dựng kỹ năng Python có thu nhập cao của bạn” và tìm hiểu cách tôi phát triển công việc viết mã của mình trực tuyến cũng như cách bạn có thể làm được—từ sự thoải mái của bạn
Tham gia hội thảo trên web miễn phí ngay bây giờ
Chris
Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính
Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới
Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây