Menu
CoddyTech

Lập chỉ mục mảng

Bài học 12 trên 18 trong khóa học Nền tảng NumPy của Coddy.

Một tính năng tuyệt vời khác của Numpy là khả năng chọn các chỉ số cụ thể từ một mảng. Đặt một List bên trong dấu ngoặc [] và chỉ định những chỉ số bạn muốn chọn: ary[indices] 

Ví dụ 1

Lấy các phần tử ở vị trí 0th, 2nd, 4th:

x = np.arange(5, 15) # np.array([5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
x[[0, 2, 4]]
>>> [5, 7, 9]

Ví dụ 2

Lấy phần tử đầu tiên và cuối cùng (lần này từ một mảng 2D)

x = np.array([[0, 1], [2, 3], [4, 5], [6, 7]])
x[[0, -1]]
>>> [[0, 1], [6, 7]]

Còn nếu muốn lấy các phần tử cụ thể từ một mảng 2D thì sao?

Ta dùng ary[[Row indices], [Element indices]]

Ví dụ 3

Lấy phần tử đầu tiên và cuối cùng ở hàng thứ 2nd và 3rd

x = np.array([
	[ 0,  1,  2,  3,  4,  5],
	[ 6,  7,  8,  9, 10, 11],
	[12, 13, 14, 15, 16, 17],
	[18, 19, 20, 21, 22, 23],
])
x[[1, 1, 2, 2], [0, -1, 0, -1]]
>>> [6, 11, 12, 17]

Đã xảy ra chuyện gì?

Numpy xem chỉ số tương ứng của từng danh sách bên trong dấu ngoặc [] rồi trả về phần tử:

x[[1, 1, 2, 2], [0, -1, 0, -1]]

  • x[1, 0]  # --> 6
  • x[1, -1] # --> 11
  • x[2, 0]  # --> 12
  • x[2, -1] # --> 17

Làm thế nào để lấy chỉ số đầu tiên và cuối cùng từ tất cả các hàng?

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

challenge icon

Thử thách

Dễ

Với mảng 2D ary, hãy lấy tất cả các số chia hết cho năm (0, 5, 10, ...) bằng các phương thức đã học trong bài học này.

Tự làm thử

import numpy as np
'''
ary looks like:
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])
'''
ary = np.arange(0, 20).reshape(4, 5)  # don't change ary
res = ary[]  # <-- Complete indices
print(str(res).replace("\n", ""))  # don't change this line

Tất cả bài học trong Nền tảng NumPy

Tự luyện tập: Trình biên dịch Python online