wayground logo

Free Printable Worksheets

NEW

Font size

S
M
L
XL
Worksheets

Thư viện numpy

Total questions: 80

Worksheet time: 40mins

Name
Class
Date
1.

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?

a)

Hiểu phân tích dữ liệu là gì

b)

Nắm kiến thức cơ bản về NumPy

c)

Vận dụng các hàm hỗ trợ NumPy

d)

Thiết kế giao diện người dùng đồ họa

2.

Danh mục nội dung nào thuộc phạm vi bài học này?

a)

Lập trình mạng thời gian thực

b)

Bảo mật hệ điều hành

c)

Phần cứng máy tính nâng cao

d)

Giới thiệu phân tích dữ liệu

3.

NumPy là viết tắt của cụm từ nào trong Python?

a)

Numerical Python

b)

Numerical Programming

c)

Numeric Pipeline

d)

Number Processing

4.

Đ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ì?

a)

List tối ưu cho ma trận nhiều chiều

b)

Array không hỗ trợ toán học đại số

c)

List dùng ít bộ nhớ hơn nhiều

d)

Array xử lý mảng lớn nhanh hơn

5.

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ì?

a)

Chuyển sang kiểu chuỗi để tính

b)

Dùng list và vòng lặp thuần

c)

Dùng NumPy arrays và hàm toán học

d)

Tránh dùng thư viện bên thứ ba

6.

Lệnh nào dùng để cài đặt thư viện NumPy từ PyPI?

a)

pip install numpy

b)

pip get numpy

c)

python install numpy

d)

pip setup numpy

7.

Cú pháp nhập thư viện NumPy theo thông lệ trong Python là gì?

a)

import numpy as num

b)

import numpy as np

c)

include numpy as np

d)

from numpy import np

8.

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ì?

a)

Sao chép thư mục Scripts bất kỳ

b)

Cài đặt NumPy trước

c)

Gỡ Python rồi cài lại

d)

Cài đặt pip trước

9.

Vì sao nên dùng môi trường ảo (venv) khi cài thư viện?

a)

Giảm dung lượng RAM

b)

Tự động cập nhật Windows

c)

Chạy Python nhanh hơn

d)

Tránh xung đột hệ thống

10.

Lệnh nào tạo môi trường ảo tên myenv theo hướng dẫn?

a)

pip -m venv myenv

b)

venv -m python myenv

c)

python venv create myenv

d)

python -m venv myenv

11.

Cách kích hoạt môi trường ảo trên Windows theo hướng dẫn là gì?

a)

myenv\Scripts\activate

b)

python myenv/activate

c)

source myenv/bin/activate

d)

activate myenv now

12.

Sau khi cài đặt gói, lệnh nào kiểm tra danh sách thư viện đã cài?

a)

pip list

b)

pip tree

c)

pip show all

d)

pip config

13.

Để 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?

a)

print(python.scriptsdir)

b)

from pip import pathinfo()

c)

import os; print(os.home)

d)

import sys; print(sys.path)

14.

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ị?

a)

arr = numpy.array(value1 value2, )

b)

arr = np.asarray{value1, value2, dtype=}

c)

arr = np.array([value1, value2], dtype=)

d)

arr = np.make([value1, value2], dtype=)

15.

Cho arr = np.array([[1, 2, 3],[4, 5, 6]]). Giá trị trả về của arr.shape là gì?

a)

(6,) với sáu phần tử

b)

(2, 3, 1) với một trục

c)

(3, 2) với ba hàng

d)

(2, 3) với hai hàng

16.

Với arr = np.array([[1, 2, 3],[4, 5, 6]]), kết quả của arr.sum(axis=0) là gì?

a)

[1, 2, 3] giữ nguyên hàng

b)

[5, 7, 9] theo từng cột

c)

[6, 15] theo từng hàng

d)

15 theo toàn bộ mảng

17.

Trong mảng 2D, axis=1 đại diện cho điều nào dưới đây?

a)

Tính theo toàn bộ trục

b)

Tính theo phần tử đơn

c)

Tính theo các cột dọc

d)

Tính theo các hàng ngang

18.

Chọn đoạn mã tạo mảng 2 chiều có các hàng [1, 2] và [3, 4].

a)

np.array([(1, 2), (3, 4)])

b)

np.array([1, 2, 3, 4])

c)

np.array({[1, 2], [3, 4]})

d)

np.array([[1, 2, 3, 4]])

19.

Phát biểu đúng về axis trong NumPy đối với mảng 2D là gì?

a)

Axis 0 là theo cột, Axis 1 theo hàng

b)

Axis 0 là theo hàng, Axis 1 theo cột

c)

Axis 0 và Axis 1 đều theo hàng

d)

Axis 0 và Axis 1 đều theo cột

20.

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?

a)

arr.sum(axis=1) cho từng hàng

b)

arr.sum(axis=0) cho từng hàng

c)

arr.total(axis=1) từng hàng

d)

sum(arr, axis=None) từng hàng

21.

Mảng 3 chiều được tạo bằng cú pháp nào dưới đây là hợp lệ nhất?

a)

np.array([[(1,),(2,)],[(3,),(4,)]])

b)

np.array(((1),(2),(3)))

c)

np.array({((1)),((2))})

d)

np.array([[1,2],[3,4],[5]])

22.

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?

a)

np.random.randn(shape)

b)

np.full(shape)

c)

np.ones(shape)

d)

np.zeros(shape)

23.

Phát biểu đúng về np.arange(start, stop, step) là gì?

a)

Sinh dãy đóng cả hai đầu đoạn

b)

Sinh dãy với start < value ≤ stop

c)

Sinh dãy chỉ gồm giá trị step

d)

Sinh dãy với start ≤ value < stop

24.

Để tạo ma trận đơn vị cỡ n×n, bạn dùng hàm nào?

a)

np.ones(n)

b)

np.identity(1)

c)

np.eye(n)

d)

np.diag(n)

25.

Gọi a = np.full((2,3), 5). Phần tử a[1,2] có giá trị nào?

a)

5

b)

0

c)

2

d)

3

26.

Câu lệnh nào giúp cố định kết quả sinh số ngẫu nhiên để tái lập?

a)

np.random.randn(id)

b)

np.random.seed(id)

c)

np.arange(seed)

d)

np.full(seed)

27.

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ự?

a)

for x in h: pass

b)

for i in h.shape: print(i)

c)

print(h[len(h)])

d)

for i in range(len(h)): print(h[i])

28.

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?

a)

for r,c in i.shape: print(i[r,c])

b)

for r in range(i.shape[0]): for c in range(i.shape[1]): print(i[r,c])

c)

for c in range(i.shape[1]): print(i[c])

d)

for r in i: print(i[r])

29.

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?

a)

np.ones([2,3,4])

b)

np.arange([2,3,4])

c)

np.eye([2,3,4])

d)

np.diag([2,3,4])

30.

Lệnh nào lưu một mảng NumPy duy nhất vào file nhị phân chuyên dụng?

a)

np.savez("data.npy", arr)

b)

np.savetxt("data.npy", arr)

c)

np.save("data.npy", arr)

d)

np.load("data.npy", arr)

31.

Để 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?

a)

np.savez với phần mở rộng .npz

b)

np.save với phần mở rộng .npy

c)

np.savetxt với phần mở rộng .csv

d)

np.dump với phần mở rộng .zip

32.

Câu lệnh nào đúng để lưu mảng arr thành văn bản số nguyên?

a)

np.savetxt("data.txt", arr, fmt="%d")

b)

np.save("data.txt", arr, fmt="%d")

c)

np.dump("data.txt", arr, fmt="%d")

d)

np.savez("data.txt", arr, fmt="%d")

33.

Làm thế nào để đọc lại mảng từ file .npy đã lưu trước đó?

a)

loaded = np.import("data.npy")

b)

loaded = np.read("data.npy")

c)

loaded = np.load("data.npy")

d)

loaded = np.loadtxt("data.npy")

34.

Sau khi dùng data = np.load("data.npz"), cách truy cập mảng có tên "array1" là gì?

a)

data.get_array1

b)

data["array1"]

c)

data.array1()

d)

np.load("array1")

35.

Để đọc dữ liệu số nguyên từ file văn bản, lựa chọn nào là đúng?

a)

np.loadtxt("data.txt", dtype=int)

b)

np.load("data.txt", dtype=int)

c)

np.savetxt("data.txt", dtype=int)

d)

np.genfromtxt("data.npy", dtype=int)

36.

Cho arr = np.array([10, 20, 30, 40, 50]). Biểu thức nào trả về ba phần tử đầu?

a)

arr[:-3:]

b)

arr[:3]

c)

arr[3:]

d)

arr[-3:]

37.

Với arr = np.array([10, 20, 30, 40, 50]), kết quả của arr[-2:] là gì?

a)

[40 50]

b)

[10 20]

c)

[30 40]

d)

[20 30 40]

38.

Cú pháp cắt lát start:end trong NumPy có đặc điểm nào đúng?

a)

Start được tính từ 1 thay vì 0

b)

Cả start và end đều bị bỏ qua

c)

End bao gồm, lấy đến đúng chỉ số end

d)

End không bao gồm, dừng trước chỉ số end

39.

Trong truy xuất ma trận, array[i][j] tương đương với biểu thức nào?

a)

array[j, i]

b)

array[i:j]

c)

array[i, j]

d)

array[i::j]

40.

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ì?

a)

6

b)

2

c)

5

d)

8

41.

Với cùng mảng X, lệnh print(X[1:3, 1:3]) trả về ma trận con nào?

a)

[[6,2],[9,1]]

b)

[[5,6],[1,5]]

c)

[[2,3],[5,6]]

d)

[[5,6],[8,9]]

42.

Lệnh print(X[:2, :2]) lấy ra phần nào của X?

a)

Hai dòng đầu, hai cột đầu

b)

Hai dòng cuối, hai cột đầu

c)

Hai dòng đầu, hai cột cuối

d)

Hai dòng cuối, hai cột cuối

43.

Kết quả của print(X[-2:, -2:]) là gì?

a)

[[9,1],[1,5]]

b)

[[8,9],[5,1]]

c)

[[6,2],[1,5]]

d)

[[9,1],[5,5]]

44.

Với chỉ số không liên tục, print(X[[0, 2], :]) trả về gì?

a)

Hai dòng 1 và 3, tất cả cột

b)

Dòng 0 đến 2, bước 2

c)

Hai cột 0 và 2, tất cả dòng

d)

Hai dòng 0 và 2, tất cả cột

45.

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.

a)

X[1:3, :]

b)

X[[1, 3], :]

c)

X[:, 1:3]

d)

X[:, [1, 3]]

46.

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?

a)

X[1:3, :2]

b)

X[:3, 0:2]

c)

X[1:2, 0:3]

d)

X[1:3, 0:2]

47.

Giả sử cần trích xuất [[2,3],[5,6]] từ X. Câu lệnh nào đúng?

a)

X[:, 1:3]

b)

X[[0,1],[1,2]]

c)

X[1:3, 0:2]

d)

X[0:2, 1:3]

48.

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ì?

a)

X[0:4,0:4]

b)

X[:, [0,1,2,1]]

c)

X[[0,1,2,3],[0,1,2,3]]

d)

X[[0,1,2,3],[0,1,2,1]]

49.

Để 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.

a)

X[0:2, [0, 3]]

b)

X[[0,1], [0,3]]

c)

X[[0,1], 0:3]

d)

X[:2, 0:3:3]

50.

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?

a)

np.expand_dims(array, axes)

b)

np.concatenate(array, axes)

c)

np.reshape(array, axes)

d)

np.transpose(array, axes)

51.

Chọn phát biểu đúng về np.reshape(new_shape) khi dùng giá trị -1 trong new_shape.

a)

Tất cả phần tử sẽ được nhân đôi kích thước

b)

Mảng sẽ được chuyển vị theo trục cuối

c)

NumPy tự suy ra kích thước còn lại

d)

Mảng sẽ được ép về kiểu một chiều

52.

Sự khác nhau chính giữa np.stack và np.concatenate là gì?

a)

Cả hai chỉ hoạt động với mảng một chiều

b)

stack tạo chiều mới, concatenate giữ nguyên số chiều

c)

stack giữ nguyên số chiều, concatenate tạo chiều mới

d)

Cả hai luôn thêm hàng vào mảng hai chiều

53.

Để 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?

a)

np.dstack([arr1, arr2])

b)

np.hstack([arr1, arr2])

c)

np.vstack([arr1, arr2])

d)

np.expand_dims([arr1, arr2])

54.

Câu nào đúng về các hàm split trong NumPy?

a)

np.split luôn chia theo trục cuối cùng

b)

np.vsplit chia theo trục hàng của mảng 2D

c)

np.hsplit chia theo trục hàng của mảng 2D

d)

np.dsplit áp dụng cho mảng 1D duy nhất

55.

Mục đích của np.expand_dims(arr, axis=position) là gì?

a)

Hoán đổi vị trí hai trục liền kề

b)

Ghép hai mảng theo trục đã có

c)

Chia mảng thành nhiều phần bằng nhau

d)

Thêm một chiều mới tại vị trí chỉ định

56.

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?

a)

np.ndim(B)

b)

B.size

c)

B.shape

d)

len(B)

57.

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?

a)

B.reshape(3, 5)

b)

B.reshape(2, 6)

c)

B.reshape(6, 1)

d)

B.reshape(2, 4)

58.

Đâ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ử?

a)

B.reshape(-1, 5)

b)

B.reshape(-1, -1)

c)

B.reshape(3, -2)

d)

B.reshape(2, -1)

59.

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ì?

a)

np.random.randint(0, 20, 2352)

b)

np.random.randint(1, 21, 2352)

c)

np.arange(1, 2353)

d)

np.random.rand(2352) * 20

60.

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?

a)

-np.random.randint(1, 21, 2352)

b)

np.random.randint(-20, 0, 2352)

c)

np.random.randint(-21, -1, 2352)

d)

np.random.randint(-20, -1, 2352)

61.

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)

A.max() < 28

b)

A.dtype == int64

c)

A.ndim == 3

d)

A.size == 2352

62.

Để 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ì?

a)

np.vstack((C, D))

b)

np.hstack((C, D))

c)

np.concatenate((C, D), axis=2)

d)

np.stack((C, D), axis=2)

63.

np.trace(arr) cho giá trị gì đối với một ma trận vuông?

a)

Tích ma trận với chính nó

b)

Tổng các phần tử trên đường chéo chính

c)

Số hàng của ma trận đầu vào

d)

Chuẩn Frobenius của ma trận

64.

Phát biểu đúng về np.dot(A, B) khi nhân hai ma trận?

a)

Luôn cho kết quả là một số vô hướng

b)

Chỉ hợp lệ khi số cột A bằng số hàng B

c)

Chỉ dùng được cho mảng một chiều

d)

Không tuân thủ quy tắc nhân ma trận

65.

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ì?

a)

Một số vô hướng là tích vô hướng

b)

Một tensor ba chiều bất kỳ

c)

Một vector có cùng kích thước

d)

Một ma trận vuông cấp n

66.

Hàm nào trả về vị trí chỉ số của phần tử lớn nhất theo một trục?

a)

np.argsort(arr, axis=...)

b)

np.maximum(arr1, arr2)

c)

np.argmax(arr, axis=...)

d)

np.max(arr, axis=...)

67.

Để 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?

a)

np.argmin(x, y)

b)

np.min(x, y)

c)

np.sortmin(x, y)

d)

np.minimum(x, y)

68.

Cho x = np.array([1,8,6,4]). Giá trị của x.max(axis=0) là gì?

a)

4 vì là phần tử cuối cùng

b)

6 vì là trung bình lớn

c)

8 vì là phần tử lớn nhất

d)

[8] vì giữ nguyên shape

69.

Chọn mô tả đúng về keepdims=True trong các hàm tổng hợp như np.sum(..., keepdims=True).

a)

Tăng gấp đôi số chiều của mảng

b)

Luôn trả về một số vô hướng

c)

Chỉ áp dụng cho hàm np.exp

d)

Giữ nguyên số chiều sau khi giảm trục

70.

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?

a)

np.exp(arr)

b)

np.linalg.norm(arr)

c)

np.mean(arr)

d)

np.trace(arr)

71.

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)?

a)

Hàm np.trace(A,B) thực hiện nhân

b)

Toán tử A * B phần tử tương ứng

c)

Hàm np.max(A,B) thay thế nhân

d)

Toán tử A @ B tuân quy tắc nhân

72.

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ì?

a)

1

b)

2

c)

6

d)

3

73.

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?

a)

[2, 7]

b)

[1, 6]

c)

[1, 3]

d)

[1, 2]

74.

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?

a)

[1, 3, 6] khác

b)

[1, 3, 6]

c)

[1, 3, 9]

d)

[1, 7, 6]

75.

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?

a)

52

b)

50

c)

48

d)

45

76.

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ì?

a)

[0, 1]

b)

[2, 2]

c)

[1, 2]

d)

[2, 1]

77.

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ì?

a)

[0, 0, 0]

b)

[1, 1, 0]

c)

[0, 0, 1]

d)

[1, 0, 0]

78.

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ì?

a)

[2, 1, 1, 0, 1]

b)

[2, 0, 2, 2, 1]

c)

[2, 0, 1, 2, 1]

d)

[0, 0, 1, 2, 1]

79.

Phát biểu nào đúng về np.argmax đối với mảng 1 chiều?

a)

Trả về chỉ số của phần tử nhỏ nhất

b)

Trả về chỉ số của phần tử lớn nhất

c)

Trả về giá trị lớn nhất trong mảng

d)

Trả về mảng đã được sắp xếp tăng

80.

Chọn cách tạo mảng NumPy kích thước 2x4 toàn số 0 đúng nhất.

a)

np.zeros([4, 2])

b)

np.zeros((2, 4))

c)

np.zeros(2, 4)

d)

np.zero((2, 4))