Hướng dẫn dùng array.index python
Indexing cũng giống với các kiểu dữ liệu khác trong python, như tuple và list.
Kĩ thuật slicing giống với slicing trong list với tuple, và hơn thế nữa nó còn có thể áp dụng với mảng nhiều chiều. Cú pháp thông thường cho mảng một chiều như sau:
Đối với mảng nhiều chiều, cú pháp sẽ là
Câu hỏi thực hành: Làm sao để có được kết quả của toàn bộ 2 hàng cuối cùng của mảng phía trên? Đó là A[-2:,:] hoặc A[3:,:]. Làm thế nào để có được kết quả của những cột có chỉ số lẻ? Câu trả lời là A[:,1::2] Như ta đã học ở những bài trước đó, chia sẻ memory giữa các đối tượng là một chủ đề thú vị. A và A[:,1::2] bằng cách nào đó mà python hỗ trợ việc chia sẻ memory này. ta có thể kiểm tra hai đối tượng A, B có chia sẻ memory hay không thông qua phương thức np.may_share_memory(). Điều đó có nghĩa nếu bạn thay đổi giá trị trong B thì A cũng sẽ bị thay đổi.
Hàm reshape() Một tiện ích khác với numpy đó là hàm reshape nó sẽ trả về một mảng mới với shape mới tương tự với phép gán x.shape = (tuple). Mặc dù A và B share memory tuy nhiên chúng là hai đối tượng array khác nhau nên nếu ta kiểm tra id(A) và id(B) ta sẽ thấy chúng khác nhau.
Kết luận Về cơ bản kĩ thuật indexing và slicing trong numpy array cũng tương tự như các kiểu dữ liệu list hoặc tuple trong Python cơ bản. Nhưng nó được mở rộng hơn và áp dụng được với các mảng nhiều chiều. Các đối tượng numpy array khác nhau có khả năng chia sẻ memory và khi một đối tượng thay đổi giá trị thì đối tượng còn lại cũng thay đổi theo. Chúng ta có thể đổi chiều của numpy array thông qua hàm reshape(). |