AI Cho Mọi Người

AI Cho Mọi Người

Giới thiệu về numpy

 

 

Một mảng numpy là một tập hợp các giá trị cùng kiểu dữ liệu và được đánh số bằng các số nguyên dương. Numpy là module quan trọng cho việc sử lý dữ liệu và có thể chuyển đổi qua kiểu dữ liệu tensor trong tensorflow và pytorch.

Tạo mảng numpy (ndarray)

Tạo ndarray từ list

Sử dụng thuộc tính shape và hàm type() cho mảng numpy

Thay đổi shape của một mảng

Kiểu dữ liệu: Mảng numpy chứa các phần tử cùng kiểu dữ liệu. Numpy cung cấp một tập hợp các kiểu dữ liệu mà chúng có thể sử dụng để xây dựng các mảng.

Thay đổi giá trị của một phần tử

Tạo ndarray với hàm zeros()

Tạo ndarray với hàm ones()

Tạo ndarray với hàm full()

Tạo ma trận đường chéo

Tạo một numpy array với giá trị ngẫu nhiên

Điều kiện cho mảng numpy

Chuyển mảng về một chiều

Array indexing: Numpy cung cấp một số cách để truy xuất phần tử trong mảng. Truy xuất phần tử dùng kỹ thuật slicing tương tự như danh sách (list) trong python.

Ví dụ 1: Lấy các phần tử từ mảng 2 chiều như sau

Việc một mảng mới được tạo ra từ slicing sẽ có cùng địa chỉ với mảng gốc. Nếu thay đổi một trong hai mảng này thì mảng còn lại cũng thay đổi theo.

Ví du 2: Lấy một dòng dữ liệu

Ví du 3: Lấy một cột dữ liệu

Khi bạn truy xuất mảng dùng slicing, kết quả trả về sẽ là mảng con của mảng ban đầu. Nếu sử dụng chỉ số mảng (index), chúng ta có thể xây dựng mảng tùy ý từ một mảng khác.

Boolean indexing: Cho phép chúng ta chọn ra các phần tử tùy ý của một mảng. Kiểu truy xuất này thường được sử dụng để chọn ra các phần tử thỏa mãn điều kiện nào đó.

Ví dụ 4: Tìm các vị trí thỏa mãn điều kiện

Ví dụ 5: Tìm các vị trí thỏa mãn điều kiện và lấy các phần tử tương ứng

Phép toán trên mảng

Phép cộng giữa hai mảng

 

Phép trừ giữa hai mảng

Phép nhân giữa hai mảng

Phép chia giữa hai mảng

Tính căn bậc 2 cho từng phần tử

Nhân giữa hai vector (inner product)

Nhân giữa vector và ma trận

Nhân giữa hai ma trận

Tính tổng cho một mảng numpy

Chuyển vị cho một ma trận

Broadcasting: Cho phép thực thi các phép toán trên các mảng có kích thước khác nhau.

Ví dụ, chúng ta muốn cộng một vector cho mỗi hàng của ma trận. Chúng ta có thể làm như như sau

Cách này hoạt động bình thường với ma trận X nhỏ. Khi ma trận X lớn, việc sử dụng vòng lặp này sẽ rất chậm.

Chúng ta có thể thực hiện mục đích trên bằng cách xếp chồng nhiều bản sao của v theo chiều dọc, sau đó thực hiện phép tính tổng với X. Chúng ta có thể thực hiện phương pháp này như sau

Numpy broadcasting cho phép chúng ta thực thi tính toán này mà không cần phải làm thêm các bước thêm nào.