-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnumpy_and_calculate.py
165 lines (134 loc) · 4.77 KB
/
numpy_and_calculate.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
import numpy as np
#tạo mảng 1 chiều
a = np.array([1,2,3])
#in mảng
print(a)
#in ra phần tử bất kì
element = a[1]
print(element) #vị trí số 1 của mảng là 2
#tạo mảng 2 chiều
matrix = np.array([[1,2,3], [4,5,6], [7,8,9]])
#in mảng
print(matrix)
#in phần tử bất kì
element = matrix[1,2] #vị trí hàng thứ 1 và cột thứ 2(tính từ 0)
print(element) #có giá trị là 6
#cách tạo mảng
#tạo mảng toàn số 0
a = np.zeros((3,5)) #3 hàng và 5 cột
print(a)
#tạo mảng toàn số 1
a = np.ones((3,5))
print(a)
#tạo mảng rỗng
a = np.empty((3,5)) #lưu ý mảng rỗng nó sẽ mặc định hiển thị là 1
print(a)
#tạo mảng từ 1 đến 100, bước nhảy 1
a = np.arange(1,101,1)
print(a)
#tạo mảng gồm các phần tử với khoảng cách đều nhau
a = np.linspace(0,10,5) #mảng start 0 end là 10 và có 5 phần tử cách đều nhau
print(a) #[ 0. 2.5 5. 7.5 10. ]
#xác định kiểu dữ liệu
a = np.ones(5, dtype= np.int64)
print(a.dtype) #int64
#thêm, xóa, sắp xếp các bảng
#tạo mảng ban đầu
arr = np.array([3,1,2,4,5]) #3,1,2,4,5
print(arr)
#sắp xếp
arr = np.sort(arr)
print(arr) #[1 2 3 4 5]
#sắp xếp ngược (sắp xếp nhưng in theo chiều ngược lại)
arr = np.sort(arr)[::-1]
print(arr) #[5 4 3 2 1]
# thêm phần tử vào mảng
arr = np.append(arr, 6) #thêm 6 vào mảng
print(arr) #[5 4 3 2 1 6]
#xóa 1 vị trí nào đó trong mảng
arr = np.delete(arr, 3) #xóa vị trí thứ 3
print(arr) #[5 4 3 1 6] mất số 2
#tạo mảng 2 chiều
arr = np.array([[3,1,2],[4,6,8],[9,7,5]])
#sắp xếp tăng dần
sap_xep_theo_hang = np.sort(arr, axis=1) #theo hàng thì axis =1
print(sap_xep_theo_hang) #[[1 2 3] [4 6 8] [5 7 9]]
sap_xep_theo_cot = np.sort(arr, axis =0) #theo cột thì axis =0
print(sap_xep_theo_cot) #[[3 1 2] [4 6 5] [9 7 8]]
#sắp xếp giảm dần(thên dấu -)
sap_xep_theo_hang = -np.sort(-arr, axis=1) #theo hàng thì axis =1
print(sap_xep_theo_hang) #[[3 2 1] [8 6 4] [9 7 5]]
sap_xep_theo_cot = -np.sort(-arr, axis =0) #theo cột thì axis =0
print(sap_xep_theo_cot) #[[9 7 8] [4 6 5] [3 1 2]]
#đưa ra các thông số về mảng
#tạo mảng 2 chiều
arr = np.array([[1,2,3], [4,5,6]])
#sử dụng các thuộc tính để lấy thông tin về chúng
so_chieu = arr.ndim #số chiều
kich_thuoc = arr.size #kích thước = tổng số phần tử
hinh_dang = arr.shape #hình dạng (số hàng x số cột)
#in ra các thông số
print("Số chiều: ", so_chieu) #Số chiều: 2
print("Kích thước: ", kich_thuoc) #Kích thước: 6
print("Hình dạng: ", hinh_dang) #Hình dạng: (2,3)
#chuyển đổi kiểu dữ liệu
arr = np.array([1,2,3,4,5])
#chuyển sang kiểu float
arr_float = arr.astype(float)
print(arr_float) #[1. 2. 3. 4. 5.]
#thay đổi hình dạng của mảng
#từ 1 chiều thành nhiều chiều
arr = np.array([1,2 ,3 ,5 ,0,6])
reshaped_arr = arr.reshape(2,3)
print(reshaped_arr) #[[1 2 3] [5 0 6]]
reshaped_arr =arr.reshape(3,2)
print(reshaped_arr) #[[1 2] [3 5] [0 6]
#từ nhiều chiều thành 1 chiều
reshaped_arr = reshaped_arr.flatten()
print(reshaped_arr) #[1 2 3 5 0 6]
#cắt lát mảng
arr = np.array([1,2,3,4,5,6,7,8])
#cắt từ vị trí 3 đến 5
arr_cut = arr[3:5]
print(arr_cut) #[4 5]
#cắt từ phần tử đầu tiên đến -1 (python cho phép duyệt lùi)
arr_cut = arr[:-1] #từ ptu 0 (là 1) đếm lùi lại thì ptu -1 là 7
print(arr_cut) #[1 2 3 4 5 6 7]
#cắt từ phần -3 đến hết
arr_cut = arr[-3:] #từ phần tử 0 (là 1)đếm lùi lại thành -1 -2 -3 thì -3 là số 6
print(arr_cut) #[6 7 8]
#chuyển vị (hàng thành cột, cột thành hàng) -> lật mảng lại
arr = np.array([[1,2,3],[4,5,6]])
print(arr) #[[1,2,3],[4,5,6]]
transposed_arr = arr.T #T là chuyển vị
print(transposed_arr) #[[1 4] [2 5] [3 6]]
#nối mảng
arr1 = np.array([1,2,3])
arr2 = np.array([4,5,6])
arr= np.concatenate((arr1, arr2)) #nối arr1 và arr2
print(arr) #[1 2 3 4 5 6]
# tính toán
arr = np.array([1,2,3,4,5])
#tính tổng
sum_arr = np.sum(arr)
print(sum_arr) #15
#tính trung bình
avg_arr = np.mean(arr)
print(avg_arr) #3.0
#tính max
max_arr = np.max(arr)
print(max_arr) #5
#tính min
min_arr = np.min(arr)
print(min_arr) #1
#tính độ lệch chuẩn, đo lường mức độ phân tán của dữ liệu
std_arr = np.std(arr)
print(std_arr) #1.4142135623730951
#tính phương sai, đo lường mức độ biến thiên của dữ liệu
var_arr = np.var(arr)
print(var_arr) #2.0
#tính tổng tích chập
arr1 = np.array([1,2,3])
arr2 = np.array([4,5,6])
dot_product = np.dot(arr1, arr2)
print(dot_product) #32