Làm việc với NumPy trong Python Trong bài viết này Stanford sẽ giới thiệu với các bạn học lập trình python một thư viện rất hữu ích trong việc với ma trận, mảng nhiều chiều trong Python. NumPy là gì ? Numpy là một thư viện lõi phục vụ cho khoa học máy tính, Machine learning trong lập trình Python. Khi nào cần dùng NumPy NumPy hỗ trợ cho việc tính toán các mảng nhiều chiều, có kích thước lớn với các hàm đã được tối ưu áp dụng lên các mảng nhiều chiều đó. Numpy đặc biệt hữu ích khi thực hiện các hàm liên quan tới Đại Số Tuyến Tính. Sử dụng NumPy trong Python Để cài đặt numpy nếu bạn có Anaconda chỉ cần gõ conda install numpy hoặc sử dụng tools pip pip install numpy. Trong ứng dụng python, chúng ta cần khai báo import numpy để có thể bắt đầu sử dụng các hàm của numpy. Vì numpy là thư viện được sử dụng thường xuyên nên nó thường được đặt ngắn thành np import numpy as np np có thể thay thế bằng các từ khác. Tuy nhiên bạn nên đặt là np vì các tài liệu hướng dẫn đều ngầm quy ước như thế. Làm việc với các thành phần, hàm trong NumPy 1. CÁC THAO TÁC CƠ BẢN VỚI MẢNG Để lấy được các phần tử trong mảng ta có thể dùng chỉ số và bắt đầu bằng 0 import numpy as np #Khai báo 1 mảng a = np.array([1,3,6]) #Lấy giá trị của 1 phần tử print("Giá trị của phần tử thứ 2 là: ", a[1]) #Kiểu của mảng print(type(a)) #Kích thước của mảng print(a.shape) #Kiểu dữ liệu của mảng print("Kiểu dữ liệu của mảng: ", a.dtype) #Khai báo mảng 2 chiều a1 = np.array([[1,3,2],[5,6,8],[4,7,9]]) #Số phần tử của mảng print("Số lượng phần tử của mảng: ", a1.size) #Kích thước của mảng print("Số lượng phần tử từng chiều: ", a1.shape) #Lấy số chiều print("Số chiều của mảng: ", a1.ndim) #Lấy phần tử tại vị trí 0,1 print("Giá trị a1[0,1] = ", a1[0,1]) 2. TẠO CÁC DẠNG MẢNG HAY MA TRẬN Trong numpy hỗ trợ các bạn học lập trình python có thể thực hiện tạo các dạng mảng, ma trận gán giá trị ban đầu khác nhau bao gồm số 0, giá trị mặc định ban đầu, ma trận đơn vị,...Các bạn có thể xem một số đoạn code tham khảo như sau: import numpy as np #Khai báo mảng với các phần tử có giá trị 0 a2 = np.zeros((2,2)) print("Mảng a2: \n", a2) #Khai báo mảng với các phần tử có giá trị 1 a3 = np.ones((2,2)) print("Mảng a3: \n", a3) #Khai báo ma trận đơn vị với đường chéo chính có giá trị 1 a4 = np.eye(2) print("Mảng a4: \n", a4) #Tạo mảng với thiết lập giá trị cho các phần tử a5 = np.full((2,2),6) print("Mảng a5: \n", a5) #Tạo ra mảng với giá trị ngẫu nhiên a6 = np.random.random((2,2)) print("Mảng a6: \n", a6) 3. PHÉP TÍNH VỚI MA TRẬN Khi sử dụng numpy giúp người lập trình python thực hiện các phép toán giữa các mảng hay ma trận để thực hiện các phép toán +,-,*,/ trở lên dễ dàng hơn rất nhiều. Ví dụ sau minh họa thực hiện phép toán giữa 2 mảng: #Các phép toán với ma trận x = np.array([[1,2,3],[2,5,3]]) y = np.array([[1,3,2],[5,2,1]]) #Cộng hai ma trận, cộng từng phần tử tương ứng với nhau s = x + y print("Tổng hai ma trận: \n", s) print("Tổng hai ma trận: \n", np.add(x,y)) #Trừ hai ma trận, trừ từng phần tử tương ứng với nhau sub = x - y print("Hiệu hai ma trận: \n", sub) print("Hiệu hai ma trận: \n", np.subtract(x,y)) #Nhân 2 ma trận, trừ từng phần tử tương ứng với nhau multi = x * y print("Nhân hai ma trận: \n", multi) print("Nhân hai ma trận: \n", np.multiply(x,y)) #Chia 2 ma trận, nhân từng phần tử tương ứng với nhau div = x / y print("Chia hai ma trận: \n", div) print("Chia hai ma trận: \n", np.divide(x,y)) #Phép nhân ma trận với ma trận hoặc vector # Để nhân được 2 ma trận yêu cầu số cột của ma trận 1 phải bằng số dòng ma trận 2 w = np.array([[1,2],[3,5],[2,3]]) print("Nhân 2 ma trận: \n", np.dot(x,w)) Kết quả chạy sẽ được như sau: Tổng hai ma trận: [[2 5 5] [7 7 4]] Tổng hai ma trận: [[2 5 5] [7 7 4]] Hiệu hai ma trận: [[ 0 -1 1] [-3 3 2]] Hiệu hai ma trận: [[ 0 -1 1] [-3 3 2]] Nhân hai ma trận: [[ 1 6 6] [10 10 3]] Nhân hai ma trận: [[ 1 6 6] [10 10 3]] Chia hai ma trận: [[1. 0.66666667 1.5 ] [0.4 2.5 3. ]] Chia hai ma trận: [[1. 0.66666667 1.5 ] [0.4 2.5 3. ]] Nhân 2 ma trận: [[13 21] [23 38]] 4. HÀM RESHAPE Sử dụng để tạo hoặc chuyển về dạng mảng khác mà không thay đổi giá trị. Ví dụ đổi mảng 2x3 thành 3x2 như ví dụ dưới đây: import numpy as np a = np.array([(8,9,10),(11,12,13)]) print(a) a=a.reshape(3,2) print(a) 5. SLICING Sử dụng để trích xuất các phần tử hay mảng con từ một mảng đã cho # Lấy dòng 1 print("Dãy 1 trong mảng: ", a1[0,:].shape) # Lấy dòng 2 print("Dãy 2 trong mảng", a1[1,:].shape) #Lấy cột 1 print("Cột 1 trong mảng: ", a1[:,0]) #Lấy mảng con từ dòng thứ 2 và cột ở vị trí 1,2 b = a1[1:,1: 3] print("Mảng b:\n", b) 6. MAX/MIN Sử dụng để tính giá trị lớn nhất, nhỏ nhất và tổng theo từng chiều trong mảng sử dụng numpy import numpy as np a= np.array([1,2,3]) print(a.min()) print(a.max()) print(a.sum()) Trong hình trên thì các cột trong mảng gọi là trục 0, các hàng gọi là trục 1. Sử dụng kí hiệu này chúng ta có thể thực hiện tính tổng theo từng trục trong numpy. import numpy as np a= np.array([(1,2,3),(3,4,5)]) print(a.sum(axis=0)) Kết quả thu được là: [4 6 8] Hy vọng qua bài viết này sẽ giúp bạn hiểu rõ hơn về thư viện numpy trong python. Còn rất nhiều thú vị về numpy mà các bạn có thể tìm thấy bằng việc đọc thêm tài liệu trên chính trang của họ: numpy document. Bên cạnh đó để bắt đầu chinh phục học lập trình python các bạn có thể tham khảo khóa học: tại đây ============================= ☎ STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ Hotline: 0963 723 236 - 0866 586 366 Website: https://stanford.com.vn Facebook: http://bit.ly/2FN0TYb Youtube: http://bit.ly/2TkKT7I Tags: học python, học lập trình python, khóa python, khóa python cơ bản, học numpy, làm việc với python, học python cho người mới