Chuyển đổi ma trận thưa thớt thành ma trận dày đặc python

Trong bài viết này, chúng tôi sẽ chỉ cho bạn ma trận thưa thớt là gì và cách tạo ma trận thưa thớt trong python

Ma trận thưa thớt là gì?

Ma trận thưa là ma trận có hầu hết các phần tử bằng 0. Tức là ma trận chỉ chứa dữ liệu ở một vài vị trí. Và hầu hết bộ nhớ được tiêu thụ bởi một ma trận thưa thớt được tạo thành từ các số không

Ví dụ -

M = [
   [1, 0, 0, 0],
   [0, 0, 3, 0],
   [0, 0, 0, 0],
   [0, 0, 0, 2]
]

Việc sử dụng mảng 2D để biểu diễn ma trận thưa thớt sẽ lãng phí rất nhiều bộ nhớ vì các số 0 trong ma trận là vô dụng trong hầu hết các tình huống. Kết quả là, thay vì giữ các số 0 bên cạnh các phần tử khác không, chúng tôi chỉ lưu trữ các phần tử khác không. Điều này liên quan đến việc sử dụng bộ ba để lưu trữ các phần tử khác không [Hàng, Cột, giá trị]

Xử lý ngôn ngữ tự nhiên [NLP] và mã hóa dữ liệu đều sử dụng rất nhiều ma trận thưa thớt. Nếu phần lớn các phần tử của ma trận là 0, việc lưu trữ tất cả các phần tử của ma trận trở nên tốn kém về mặt lưu trữ

Điều này là do chúng tôi chỉ có một vài điểm dữ liệu và phần lớn dung lượng lưu trữ bị chiếm dụng bởi các số 0 dư thừa

Ưu điểm của ma trận thưa thớt

Sau đây là hai ưu điểm chính của việc sử dụng ma trận thưa thay vì ma trận đơn giản -

  • Lưu trữ - Vì có ít phần tử khác 0 hơn 0 nên có thể sử dụng ít bộ nhớ hơn để chỉ lưu trữ các phần tử đó

  • Thời gian tính toán - Có thể tiết kiệm thời gian tính toán bằng cách tạo cấu trúc dữ liệu một cách hợp lý chỉ duyệt qua các phần tử khác không

Làm cách nào để tạo ma trận thưa thớt trong python?

SciPy trong Python cung cấp các công cụ để tạo ma trận thưa thớt bằng cách sử dụng các cấu trúc dữ liệu khác nhau, cũng như để chuyển đổi ma trận dày đặc thành ma trận thưa thớt

Trong Python, Chúng ta có thể tạo một ma trận thưa bằng các hàm sau -

  • hàm csr_matrix[] − tạo một ma trận thưa ở định dạng hàng thưa được nén,

  • hàm csc_matrix[] − tạo một ma trận thưa ở định dạng cột thưa được nén. ,,

Phương pháp 1. Tạo ma trận thưa bằng hàm csr_matrix[]

Nó tạo ra một ma trận thưa thớt ở định dạng hàng thưa thớt được nén

cú pháp

scipy.sparse.csr_matrix[shape=None, dtype=None]

thông số

  • hình dạng - Đó là hình dạng của ma trận

  • dtype - Nó là kiểu dữ liệu của ma trận

Thuật toán [Các bước]

Sau đây là Thuật toán/các bước cần tuân thủ để thực hiện tác vụ mong muốn -

  • Sử dụng từ khóa nhập để nhập mô-đun numpy có tên bí danh [np]

  • Sử dụng từ khóa nhập để nhập hàm csr_matrix từ mô-đun scipy

  • Sử dụng hàm csr_matrix[] để tạo ma trận thưa thớt 3 * 3 [định dạng hàng] của kiểu dữ liệu int và chuyển đổi thành mảng bằng hàm toarray[]

  • In ma trận thưa kết quả

Ví dụ

Chương trình sau đây trả về ma trận thưa thớt [3x3] bằng cách sử dụng hàm csr_matrix[] −

đầu ra

Khi thực thi, chương trình trên sẽ tạo đầu ra sau -

The resultant sparse matrix:
 [[0 0 0]
 [0 0 0]
 [0 0 0]]

Phương pháp 2. Tạo ma trận thưa bằng hàm csr_matrix[] của Mảng Numpy đã cho

Thuật toán [Các bước]

Sau đây là Thuật toán/các bước cần tuân thủ để thực hiện tác vụ mong muốn -

  • Sử dụng từ khóa nhập để nhập mô-đun numpy có tên bí danh [np]

  • Sử dụng từ khóa nhập để nhập hàm csr_matrix từ mô-đun scipy

  • Tạo mảng bằng cách sử dụng numpy. hàm array[] [trả về một ndarray. ndarray là một đối tượng mảng thỏa mãn các yêu cầu đã cho]

Ví dụ

đầu ra

Khi thực thi, chương trình trên sẽ tạo đầu ra sau -

The resultant sparse matrix:
 [[2 1 0]
 [3 7 6]
 [0 0 5]]

Phương pháp 3. Tạo ma trận thưa bằng hàm csc_matrix[]

Nó tạo ra một ma trận thưa ở định dạng cột thưa được nén

cú pháp

scipy.sparse.csc_matrix[shape=None, dtype=None]

thông số

  • hình dạng - Đó là hình dạng của ma trận

  • dtype - Nó là kiểu dữ liệu của ma trận

thuật toán

Sau đây là Thuật toán/các bước cần tuân thủ để thực hiện tác vụ mong muốn -

  • Sử dụng từ khóa nhập để nhập mô-đun numpy có tên bí danh [np]

  • Sử dụng từ khóa nhập để nhập hàm csc_matrix từ mô-đun scipy

  • Sử dụng hàm csc_matrix[] để tạo ma trận thưa thớt 3 * 3 [định dạng cột] của kiểu dữ liệu int và chuyển đổi thành mảng bằng hàm toarray[]

  • In ma trận thưa kết quả

Ví dụ

Chương trình sau đây trả về ma trận thưa thớt [3x3] ở định dạng cột bằng cách sử dụng hàm csc_matrix[] −

đầu ra

Khi thực thi, chương trình trên sẽ tạo đầu ra sau -

The resultant sparse matrix:
 [[0 0 0]
 [0 0 0]
 [0 0 0]]

Phương pháp 4. Tạo ma trận thưa bằng hàm csc_matrix[] của mảng Numpy đã cho

Ví dụ

Chương trình sau đây trả về ma trận thưa thớt [3x3] ở định dạng cột của số nguyên bằng cách sử dụng hàm csc_matrix[] −

đầu ra

Khi thực thi, chương trình trên sẽ tạo đầu ra sau -

The resultant sparse matrix:
 [[2 1 0]
 [3 7 6]
 [0 0 5]]

Phần kết luận

Trong hướng dẫn này, chúng ta đã học được bốn cách riêng biệt để tạo ma trận thưa thớt trong Python. Chúng tôi cũng đã học cách tạo một ma trận thưa thớt từ một mảng có nhiều mảng

Chủ Đề