python-242Đọc toàn bộ đề miễn phí

Đếm phần tử vượt trung bình cột bằng mặt nạ boolean

Bảng điểm, bảng doanh số hay bảng log đều có chung một câu hỏi: mỗi cột có bao nhiêu giá

PythonCơ bản12 phút

Tiến độ của tôi ở bài này

Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

numpybroadcastingboolean-maskentry-ramp

Kiến thức tiên quyết: python-basics, numpy-axis-reduction.

Nội dung đề bài

Mô tả bài toán

Bảng điểm, bảng doanh số hay bảng log đều có chung một câu hỏi: mỗi cột có bao nhiêu giá trị nằm trên mức trung bình của chính cột đó? Broadcasting của NumPy trả lời câu hỏi này mà không cần tới hai vòng lặp lồng nhau.

Yêu cầu

Viết hàm above_column_mean(matrix) nhận một mảng NumPy hai chiều và trả về danh sách số nguyên, phần tử thứ j là số lượng giá trị trong cột j lớn hơn trung bình cộng của cột j.

Quy ước nộp bài

Nộp hàm above_column_mean trong solution.py. Hệ thống gọi hàm trực tiếp và so giá trị trả về; không đọc dữ liệu từ stdin và không in ra stdout.

Input

  • matrix: np.ndarray hai chiều (hệ thống tự chuyển từ danh sách lồng nhau), mọi hàng

cùng số cột, phần tử là số.

Output

Danh sách số nguyên gồm matrix.shape[1] phần tử, đếm theo đúng thứ tự cột.

Ràng buộc

  • Số hàng và số cột nằm trong khoảng 1 đến 50.
  • So sánh là nghiêm ngặt: giá trị đúng bằng trung bình cột không được tính.
  • Không dùng vòng lặp Python duyệt từng cột.

Ví dụ 1

Input

above_column_mean(matrix=[[1, 10], [3, 20], [5, 30]], __as_numpy__=["matrix"])

Output

[1, 1]

Ví dụ 2

Input

above_column_mean(matrix=[[1, 2], [3, 4]], __as_numpy__=["matrix"])

Output

[1, 1]

Giải thích

Với matrix = [[1, 10], [3, 20], [5, 30]], cột đầu có trung bình 3 và chỉ 5 lớn hơn 3; cột sau có trung bình 20 và chỉ 30 lớn hơn 20. Kết quả là [1, 1].

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.

Nhóm Zalo