NEW
Font size
WorksheetsThư viện numpy
Total questions: 80
Worksheet time: 40mins
Mục tiêu nào sau đây KHÔNG được nêu trong bài học về phân tích dữ liệu với NumPy?
Hiểu phân tích dữ liệu là gì
Nắm kiến thức cơ bản về NumPy
Vận dụng các hàm hỗ trợ NumPy
Thiết kế giao diện người dùng đồ họa
Danh mục nội dung nào thuộc phạm vi bài học này?
Lập trình mạng thời gian thực
Bảo mật hệ điều hành
Phần cứng máy tính nâng cao
Giới thiệu phân tích dữ liệu
NumPy là viết tắt của cụm từ nào trong Python?
Numerical Python
Numerical Programming
Numeric Pipeline
Number Processing
Điểm khác biệt chính giữa list và NumPy array khi làm việc với dữ liệu số lớn là gì?
List tối ưu cho ma trận nhiều chiều
Array không hỗ trợ toán học đại số
List dùng ít bộ nhớ hơn nhiều
Array xử lý mảng lớn nhanh hơn
Bạn cần thực hiện tính toán đại số tuyến tính trên ma trận kích thước lớn và nhiều chiều. Lựa chọn phù hợp nhất là gì?
Chuyển sang kiểu chuỗi để tính
Dùng list và vòng lặp thuần
Dùng NumPy arrays và hàm toán học
Tránh dùng thư viện bên thứ ba
Lệnh nào dùng để cài đặt thư viện NumPy từ PyPI?
pip install numpy
pip get numpy
python install numpy
pip setup numpy
Cú pháp nhập thư viện NumPy theo thông lệ trong Python là gì?
import numpy as num
import numpy as np
include numpy as np
from numpy import np
Bạn chưa có pip trên máy. Bước xử lý phù hợp nhất theo khuyến nghị là gì?
Sao chép thư mục Scripts bất kỳ
Cài đặt NumPy trước
Gỡ Python rồi cài lại
Cài đặt pip trước
Vì sao nên dùng môi trường ảo (venv) khi cài thư viện?
Giảm dung lượng RAM
Tự động cập nhật Windows
Chạy Python nhanh hơn
Tránh xung đột hệ thống
Lệnh nào tạo môi trường ảo tên myenv theo hướng dẫn?
pip -m venv myenv
venv -m python myenv
python venv create myenv
python -m venv myenv
Cách kích hoạt môi trường ảo trên Windows theo hướng dẫn là gì?
myenv\Scripts\activate
python myenv/activate
source myenv/bin/activate
activate myenv now
Sau khi cài đặt gói, lệnh nào kiểm tra danh sách thư viện đã cài?
pip list
pip tree
pip show all
pip config
Để kiểm tra đường dẫn thư mục Scripts của Python, đoạn mã tối thiểu nào phù hợp?
print(python.scriptsdir)
from pip import pathinfo()
import os; print(os.home)
import sys; print(sys.path)
Cú pháp nào dùng để tạo một mảng NumPy cơ bản từ danh sách các giá trị?
arr = numpy.array(value1 value2,
arr = np.asarray{value1, value2, dtype=
arr = np.array([value1, value2], dtype=
arr = np.make([value1, value2], dtype=
Cho arr = np.array([[1, 2, 3],[4, 5, 6]]). Giá trị trả về của arr.shape là gì?
(6,) với sáu phần tử
(2, 3, 1) với một trục
(3, 2) với ba hàng
(2, 3) với hai hàng
Với arr = np.array([[1, 2, 3],[4, 5, 6]]), kết quả của arr.sum(axis=0) là gì?
[1, 2, 3] giữ nguyên hàng
[5, 7, 9] theo từng cột
[6, 15] theo từng hàng
15 theo toàn bộ mảng
Trong mảng 2D, axis=1 đại diện cho điều nào dưới đây?
Tính theo toàn bộ trục
Tính theo phần tử đơn
Tính theo các cột dọc
Tính theo các hàng ngang
Chọn đoạn mã tạo mảng 2 chiều có các hàng [1, 2] và [3, 4].
np.array([(1, 2), (3, 4)])
np.array([1, 2, 3, 4])
np.array({[1, 2], [3, 4]})
np.array([[1, 2, 3, 4]])
Phát biểu đúng về axis trong NumPy đối với mảng 2D là gì?
Axis 0 là theo cột, Axis 1 theo hàng
Axis 0 là theo hàng, Axis 1 theo cột
Axis 0 và Axis 1 đều theo hàng
Axis 0 và Axis 1 đều theo cột
Bạn muốn tính tổng theo từng hàng của arr = np.array([[1,2,3],[4,5,6]]). Lệnh nào đúng?
arr.sum(axis=1) cho từng hàng
arr.sum(axis=0) cho từng hàng
arr.total(axis=1) từng hàng
sum(arr, axis=None) từng hàng
Mảng 3 chiều được tạo bằng cú pháp nào dưới đây là hợp lệ nhất?
np.array([[(1,),(2,)],[(3,),(4,)]])
np.array(((1),(2),(3)))
np.array({((1)),((2))})
np.array([[1,2],[3,4],[5]])
Hàm nào tạo mảng toàn các số 0 với kích thước cho trước trong NumPy?
np.random.randn(shape)
np.full(shape)
np.ones(shape)
np.zeros(shape)
Phát biểu đúng về np.arange(start, stop, step) là gì?
Sinh dãy đóng cả hai đầu đoạn
Sinh dãy với start < value ≤ stop
Sinh dãy chỉ gồm giá trị step
Sinh dãy với start ≤ value < stop
Để tạo ma trận đơn vị cỡ n×n, bạn dùng hàm nào?
np.ones(n)
np.identity(1)
np.eye(n)
np.diag(n)
Gọi a = np.full((2,3), 5). Phần tử a[1,2] có giá trị nào?
5
0
2
3
Câu lệnh nào giúp cố định kết quả sinh số ngẫu nhiên để tái lập?
np.random.randn(id)
np.random.seed(id)
np.arange(seed)
np.full(seed)
Cho h = np.array([1,2,3]). Đoạn mã nào in lần lượt các phần tử theo thứ tự?
for x in h: pass
for i in h.shape: print(i)
print(h[len(h)])
for i in range(len(h)): print(h[i])
Với i = np.ones((2,2)), vòng lặp lồng nhau nào duyệt và in từng phần tử theo hàng?
for r,c in i.shape: print(i[r,c])
for r in range(i.shape[0]): for c in range(i.shape[1]): print(i[r,c])
for c in range(i.shape[1]): print(i[c])
for r in i: print(i[r])
Lệnh nào tạo ma trận đường chéo với các phần tử 2, 3, 4 trên đường chéo chính?
np.ones([2,3,4])
np.arange([2,3,4])
np.eye([2,3,4])
np.diag([2,3,4])
Lệnh nào lưu một mảng NumPy duy nhất vào file nhị phân chuyên dụng?
np.savez("data.npy", arr)
np.savetxt("data.npy", arr)
np.save("data.npy", arr)
np.load("data.npy", arr)
Để lưu nhiều mảng NumPy vào cùng một file, nên dùng hàm nào và phần mở rộng phù hợp?
np.savez với phần mở rộng .npz
np.save với phần mở rộng .npy
np.savetxt với phần mở rộng .csv
np.dump với phần mở rộng .zip
Câu lệnh nào đúng để lưu mảng arr thành văn bản số nguyên?
np.savetxt("data.txt", arr, fmt="%d")
np.save("data.txt", arr, fmt="%d")
np.dump("data.txt", arr, fmt="%d")
np.savez("data.txt", arr, fmt="%d")
Làm thế nào để đọc lại mảng từ file .npy đã lưu trước đó?
loaded = np.import("data.npy")
loaded = np.read("data.npy")
loaded = np.load("data.npy")
loaded = np.loadtxt("data.npy")
Sau khi dùng data = np.load("data.npz"), cách truy cập mảng có tên "array1" là gì?
data.get_array1
data["array1"]
data.array1()
np.load("array1")
Để đọc dữ liệu số nguyên từ file văn bản, lựa chọn nào là đúng?
np.loadtxt("data.txt", dtype=int)
np.load("data.txt", dtype=int)
np.savetxt("data.txt", dtype=int)
np.genfromtxt("data.npy", dtype=int)
Cho arr = np.array([10, 20, 30, 40, 50]). Biểu thức nào trả về ba phần tử đầu?
arr[:-3:]
arr[:3]
arr[3:]
arr[-3:]
Với arr = np.array([10, 20, 30, 40, 50]), kết quả của arr[-2:] là gì?
[40 50]
[10 20]
[30 40]
[20 30 40]
Cú pháp cắt lát start:end trong NumPy có đặc điểm nào đúng?
Start được tính từ 1 thay vì 0
Cả start và end đều bị bỏ qua
End bao gồm, lấy đến đúng chỉ số end
End không bao gồm, dừng trước chỉ số end
Trong truy xuất ma trận, array[i][j] tương đương với biểu thức nào?
array[j, i]
array[i:j]
array[i, j]
array[i::j]
Cho mảng NumPy X = np.array([[1,2,3,4],[4,5,6,2],[7,8,9,1],[2,5,1,5]]). Kết quả của lệnh print(X[1, 2]) là gì?
6
2
5
8
Với cùng mảng X, lệnh print(X[1:3, 1:3]) trả về ma trận con nào?
[[6,2],[9,1]]
[[5,6],[1,5]]
[[2,3],[5,6]]
[[5,6],[8,9]]
Lệnh print(X[:2, :2]) lấy ra phần nào của X?
Hai dòng đầu, hai cột đầu
Hai dòng cuối, hai cột đầu
Hai dòng đầu, hai cột cuối
Hai dòng cuối, hai cột cuối
Kết quả của print(X[-2:, -2:]) là gì?
[[9,1],[1,5]]
[[8,9],[5,1]]
[[6,2],[1,5]]
[[9,1],[5,5]]
Với chỉ số không liên tục, print(X[[0, 2], :]) trả về gì?
Hai dòng 1 và 3, tất cả cột
Dòng 0 đến 2, bước 2
Hai cột 0 và 2, tất cả dòng
Hai dòng 0 và 2, tất cả cột
Hãy chọn cú pháp đúng để lấy ra các phần tử ở cột 1 và 3 của tất cả các dòng từ X.
X[1:3, :]
X[[1, 3], :]
X[:, 1:3]
X[:, [1, 3]]
Cú pháp nào lấy các dòng 1 đến 3 (không gồm 3) và các cột 0 đến 2 (không gồm 2) từ X?
X[1:3, :2]
X[:3, 0:2]
X[1:2, 0:3]
X[1:3, 0:2]
Giả sử cần trích xuất [[2,3],[5,6]] từ X. Câu lệnh nào đúng?
X[:, 1:3]
X[[0,1],[1,2]]
X[1:3, 0:2]
X[0:2, 1:3]
Muốn lấy mảng [1,5,9,5] là các phần tử đường chéo chọn từ các cặp chỉ số (0,0),(1,1),(2,2),(3,1). Cú pháp NumPy thích hợp là gì?
X[0:4,0:4]
X[:, [0,1,2,1]]
X[[0,1,2,3],[0,1,2,3]]
X[[0,1,2,3],[0,1,2,1]]
Để lấy các phần tử [[1,4],[4,2]] gồm cột 0 và 3 của hai dòng đầu, chọn câu lệnh đúng.
X[0:2, [0, 3]]
X[[0,1], [0,3]]
X[[0,1], 0:3]
X[:2, 0:3:3]
Trong NumPy, hàm nào dùng để hoán đổi trật tự các trục của mảng n chiều?
np.expand_dims(array, axes)
np.concatenate(array, axes)
np.reshape(array, axes)
np.transpose(array, axes)
Chọn phát biểu đúng về np.reshape(new_shape) khi dùng giá trị -1 trong new_shape.
Tất cả phần tử sẽ được nhân đôi kích thước
Mảng sẽ được chuyển vị theo trục cuối
NumPy tự suy ra kích thước còn lại
Mảng sẽ được ép về kiểu một chiều
Sự khác nhau chính giữa np.stack và np.concatenate là gì?
Cả hai chỉ hoạt động với mảng một chiều
stack tạo chiều mới, concatenate giữ nguyên số chiều
stack giữ nguyên số chiều, concatenate tạo chiều mới
Cả hai luôn thêm hàng vào mảng hai chiều
Để thêm các mảng theo chiều dọc (thêm hàng) trên mảng 2D, bạn dùng lựa chọn nào sau đây?
np.dstack([arr1, arr2])
np.hstack([arr1, arr2])
np.vstack([arr1, arr2])
np.expand_dims([arr1, arr2])
Câu nào đúng về các hàm split trong NumPy?
np.split luôn chia theo trục cuối cùng
np.vsplit chia theo trục hàng của mảng 2D
np.hsplit chia theo trục hàng của mảng 2D
np.dsplit áp dụng cho mảng 1D duy nhất
Mục đích của np.expand_dims(arr, axis=position) là gì?
Hoán đổi vị trí hai trục liền kề
Ghép hai mảng theo trục đã có
Chia mảng thành nhiều phần bằng nhau
Thêm một chiều mới tại vị trí chỉ định
Cho mảng B = np.array(np.arange(12)). Lệnh nào trả về số phần tử theo từng chiều của B?
np.ndim(B)
B.size
B.shape
len(B)
Với B có 12 phần tử, lệnh nào hợp lệ để biến đổi B thành ma trận 2 hàng 6 cột?
B.reshape(3, 5)
B.reshape(2, 6)
B.reshape(6, 1)
B.reshape(2, 4)
Đâu là cách dùng reshape với -1 để suy ra kích thước còn lại khi B có 12 phần tử?
B.reshape(-1, 5)
B.reshape(-1, -1)
B.reshape(3, -2)
B.reshape(2, -1)
Bạn cần phát sinh mảng A gồm 2352 số nguyên không âm trong đoạn [1, 20]. Lựa chọn phù hợp nhất là gì?
np.random.randint(0, 20, 2352)
np.random.randint(1, 21, 2352)
np.arange(1, 2353)
np.random.rand(2352) * 20
Hãy tạo mảng B gồm 2352 số nguyên không dương trong đoạn [-20, -1]. Câu lệnh nào phù hợp nhất?
-np.random.randint(1, 21, 2352)
np.random.randint(-20, 0, 2352)
np.random.randint(-21, -1, 2352)
np.random.randint(-20, -1, 2352)
Tạo ma trận C từ A có dạng 3 chiều với shape (28, 28, 3). Điều kiện nào bắt buộc phải đúng?
A.max() < 28
A.dtype == int64
A.ndim == 3
A.size == 2352
Để ghép hai ma trận C và D theo chiều dọc (stack hàng), lựa chọn phù hợp nhất là gì?
np.vstack((C, D))
np.hstack((C, D))
np.concatenate((C, D), axis=2)
np.stack((C, D), axis=2)
np.trace(arr) cho giá trị gì đối với một ma trận vuông?
Tích ma trận với chính nó
Tổng các phần tử trên đường chéo chính
Số hàng của ma trận đầu vào
Chuẩn Frobenius của ma trận
Phát biểu đúng về np.dot(A, B) khi nhân hai ma trận?
Luôn cho kết quả là một số vô hướng
Chỉ hợp lệ khi số cột A bằng số hàng B
Chỉ dùng được cho mảng một chiều
Không tuân thủ quy tắc nhân ma trận
Khi áp dụng np.dot(a, b) với hai vector 1 chiều cùng kích thước, kết quả là gì?
Một số vô hướng là tích vô hướng
Một tensor ba chiều bất kỳ
Một vector có cùng kích thước
Một ma trận vuông cấp n
Hàm nào trả về vị trí chỉ số của phần tử lớn nhất theo một trục?
np.argsort(arr, axis=...)
np.maximum(arr1, arr2)
np.argmax(arr, axis=...)
np.max(arr, axis=...)
Để lấy mảng các giá trị nhỏ hơn tương ứng giữa x và y có cùng shape, nên dùng hàm nào?
np.argmin(x, y)
np.min(x, y)
np.sortmin(x, y)
np.minimum(x, y)
Cho x = np.array([1,8,6,4]). Giá trị của x.max(axis=0) là gì?
4 vì là phần tử cuối cùng
6 vì là trung bình lớn
8 vì là phần tử lớn nhất
[8] vì giữ nguyên shape
Chọn mô tả đúng về keepdims=True trong các hàm tổng hợp như np.sum(..., keepdims=True).
Tăng gấp đôi số chiều của mảng
Luôn trả về một số vô hướng
Chỉ áp dụng cho hàm np.exp
Giữ nguyên số chiều sau khi giảm trục
Hàm nào sau đây tính hàm mũ cơ số e cho từng phần tử của mảng arr?
np.exp(arr)
np.linalg.norm(arr)
np.mean(arr)
np.trace(arr)
Trong các lựa chọn sau, đâu là cách hợp lệ khác để nhân ma trận A và B ngoài np.dot(A,B)?
Hàm np.trace(A,B) thực hiện nhân
Toán tử A * B phần tử tương ứng
Hàm np.max(A,B) thay thế nhân
Toán tử A @ B tuân quy tắc nhân
Cho mảng A = np.array([[1, 3, 6], [2, 7, 9]]). Giá trị nhỏ nhất của toàn bộ mảng A là gì?
1
2
6
3
Với A = np.array([[1, 3, 6], [2, 7, 9]]), dùng np.min(A, axis=1) sẽ trả về kết quả nào?
[2, 7]
[1, 6]
[1, 3]
[1, 2]
Với A = np.array([[1, 3, 6], [2, 7, 9]]), dùng np.min(A, axis=0) sẽ trả về kết quả nào?
[1, 3, 6] khác
[1, 3, 6]
[1, 3, 9]
[1, 7, 6]
Cho A và B như sau: A = np.array([[1, 3, 6], [2, 7, 9]]), B = np.array([[0, 4, 5], [1, 6, 10]]). Tại mỗi vị trí, chọn phần tử lớn hơn giữa A và B (np.maximum(A,B)). Tổng các phần tử của ma trận kết quả bằng bao nhiêu?
52
50
48
45
Với A như trên, chỉ số cột (axis=0) có giá trị lớn nhất theo từng dòng (np.argmax(A, axis=1)) là gì?
[0, 1]
[2, 2]
[1, 2]
[2, 1]
Với A, hãy lấy chỉ số dòng của giá trị nhỏ nhất theo từng cột (np.argmin(A, axis=0)). Kết quả đúng là gì?
[0, 0, 0]
[1, 1, 0]
[0, 0, 1]
[1, 0, 0]
Ma trận B = np.array([[0.1, 0.2, 0.7], [0.6, 0.4, 0.0], [0.1, 0.5, 0.4], [0.3, 0.3, 0.4], [0.1, 0.8, 0.1]]). Sử dụng np.argmax(B, axis=1) để gán nhãn lớp cho từng quan sát. Dãy nhãn thu được là gì?
[2, 1, 1, 0, 1]
[2, 0, 2, 2, 1]
[2, 0, 1, 2, 1]
[0, 0, 1, 2, 1]
Phát biểu nào đúng về np.argmax đối với mảng 1 chiều?
Trả về chỉ số của phần tử nhỏ nhất
Trả về chỉ số của phần tử lớn nhất
Trả về giá trị lớn nhất trong mảng
Trả về mảng đã được sắp xếp tăng
Chọn cách tạo mảng NumPy kích thước 2x4 toàn số 0 đúng nhất.
np.zeros([4, 2])
np.zeros((2, 4))
np.zeros(2, 4)
np.zero((2, 4))
