Thưa thớt trong Python
Hãy tưởng tượng bạn có một ma trận 2-D với hàng trăm triệu phần tử, trong đó chỉ một vài trong số chúng chứa các giá trị khác không. Khi lưu trữ một ma trận như vậy bằng cách sử dụng phương pháp thông thường, chúng ta sẽ lãng phí rất nhiều dung lượng cho các số không Show
Cấu trúc dữ liệu thưa thớt cho phép chúng tôi chỉ lưu trữ các giá trị khác không với giả sử phần còn lại của chúng là số không. Cách tiếp cận này tiết kiệm rất nhiều bộ nhớ và thời gian tính toán. Trên thực tế, bạn có thể thường xuyên gặp phải các ma trận như vậy khi làm việc với NLP hoặc các tác vụ học máy. Trong Python, cấu trúc dữ liệu thưa thớt được triển khai trong scipy. mô-đun thưa thớt, phần lớn dựa trên mảng 1 thông thường
Hãy tạo một ma trận thưa thớt ngẫu nhiên và so sánh kích thước của nó với một ma trận thông thường giống hệt nhau
Các loại ma trận thưa thớt trong scipyCó nhiều cách để biểu diễn một ma trận thưa thớt, Scipy cung cấp bảy cách trong số đó
Mỗi định dạng đều có ưu và nhược điểm, vì vậy điều quan trọng là phải biết về sự khác biệt giữa chúng Từ điển các phím (DOK)Từ điển khóa ( 2 trong scipy) là cách dễ nhất để triển khai ma trận thưa thớt. Như tên gợi ý, nó dựa trên một từ điển, trong đó các khóa là các bộ đại diện cho các chỉ số, tôi. e. 3
Thuận lợi
Nhược điểm
Danh sách của danh sách (LIL)Định dạng dựa trên hàng ( 4 trong scipy), sử dụng hai mảng có nhiều mảng với các danh sách Python thông thường bên trong chúng. Mảng 5 lưu trữ thông tin về các ô bị chiếm, trong khi mảng 6 lưu trữ các giá trị tương ứng 0Một thuật toán đơn giản hóa để truy xuất một mục 1Thuận lợi
Nhược điểm
Danh sách tọa độ (COO)Trong scipy, định dạng COO ( 7) sử dụng ba mảng, đối với mỗi giá trị khác không, có một mục nhập trong tất cả chúng 3Mảng 6 đang lưu trữ tất cả các giá trị khác không, trong khi 9 và 0 đang lưu trữ các chỉ số tương ứng cho các giá trị nàydatarowcol0. 72493393000. 4202036100. 485427112Để tìm một giá trị cụ thể trong ma trận, bạn cần lặp lại cả hai mảng chỉ mục, điều này làm cho việc truy cập chậm khi so sánh với các định dạng khác Thuận lợi
Nhược điểm
Nén Định dạng thưa thớtHàng thưa được nén (CSR) và cột thưa được nén (CSC) là các định dạng được biết đến rộng rãi và được sử dụng nhiều nhất. Chủ yếu, chúng được sử dụng cho các tác vụ ghi một lần đọc nhiều lần Trong nội bộ, CSR dựa trên ba mảng gọn gàng
0Chúng ta có thể truy cập và sửa đổi các mảng này 1Thuật toán lập chỉ mục mục được đơn giản hóa trông như sau 2 0Thuận lợi
Nhược điểm
Định dạng Cột thưa được nén (CSC) gần như giống hệt nhau, ngoại trừ các giá trị được lập chỉ mục đầu tiên theo cột với thứ tự chính của cột. Thông thường, CSC được sử dụng khi có nhiều hàng hơn cột. Ngược lại, CSR hoạt động tốt hơn đối với định dạng 'rộng' Khối lưu trữ ma trận hàng thưa (BSR) và đường chéoLưu trữ đường chéo ( 4 là scipy) được sử dụng khi bạn cần lưu trữ ma trận đường chéo. Trong scipy, việc triển khai không chỉ giới hạn ở đường chéo chính. Tất cả các đường chéo được lưu trữ bằng hai mảng, một cho dữ liệu và một cho độ lệch đường chéoĐịnh dạng hàng thưa của khối rất giống với CSR, ngoại trừ nó lưu trữ các mẫu khối (hình vuông) thông thường chứa hầu hết dữ liệu khác không thưa thớt nghĩa là gì trong Python?Dữ liệu thưa thớt là dữ liệu có hầu hết các phần tử không được sử dụng (các phần tử không mang bất kỳ thông tin nào ) . Nó có thể là một mảng như thế này. [1, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0] Dữ liệu thưa thớt. là một tập dữ liệu trong đó hầu hết các giá trị mục bằng không.
Python mảng thưa thớt là gì?Mảng thưa hoặc ma trận thưa là một mảng trong đó hầu hết các phần tử đều bằng 0 .
Việc sử dụng thưa thớt là gì?Sử dụng ma trận thưa thớt để lưu trữ dữ liệu chứa một số lượng lớn các phần tử có giá trị bằng 0 vừa có thể tiết kiệm một lượng bộ nhớ đáng kể vừa tăng tốc độ . thưa thớt là một thuộc tính mà bạn có thể gán cho bất kỳ ma trận MATLAB® hai chiều nào bao gồm các phần tử kép hoặc logic.
Giá trị thưa thớt là gì?Ma trận chứa hầu hết các giá trị bằng 0 được gọi là thưa thớt, khác với ma trận có hầu hết các giá trị khác 0, được gọi là dày đặc. |