Hướng dẫn how do you implement a sparse matrix in python? - làm thế nào để bạn triển khai một ma trận thưa thớt trong python?

Nếu hầu hết các phần tử của ma trận có giá trị 0, thì nó được gọi là ma trận thưa thớt. Hai lợi ích chính của việc sử dụng ma trận thưa thớt thay vì ma trận đơn giản là:0 value, then it is called a sparse matrix. The two major benefits of using sparse matrix instead of a simple matrix are:

  • Lưu trữ: Có các phần tử khác không hơn số không và do đó bộ nhớ ít hơn có thể được sử dụng để chỉ lưu trữ các yếu tố đó.There are lesser non-zero elements than zeros and thus lesser memory can be used to store only those elements.
  • Thời gian tính toán: Thời gian tính toán có thể được lưu bằng cách thiết kế hợp lý cấu trúc dữ liệu chỉ đi qua các yếu tố khác không. Computing time can be saved by logically designing a data structure traversing only non-zero elements.

Các ma trận thưa thớt thường được sử dụng trong việc học máy ứng dụng như trong dữ liệu có chứa mã hóa dữ liệu ánh xạ các danh mục để đếm và cả trong toàn bộ các trường con của máy học như xử lý ngôn ngữ tự nhiên (NLP). are generallyutilized in applied machine learning such as in data containing data-encodings that map categories to count and also in entire subfields of machine learning such as natural language processing (NLP).

Example:

0 0 3 0 4            
0 0 5 7 0
0 0 0 0 0
0 2 6 0 0

Đại diện cho một ma trận thưa thớt bằng một mảng 2D dẫn đến sự lãng phí của nhiều bộ nhớ vì các số 0 trong ma trận không được sử dụng trong hầu hết các trường hợp. Vì vậy, thay vì lưu trữ số 0 với các phần tử khác không, chúng tôi chỉ lưu trữ các yếu tố khác không. Điều này có nghĩa là lưu trữ các phần tử khác không với bộ ba- (hàng, cột, giá trị).triples- (Row, Column, value).

Tạo một ma trận thưa thớt trong Python

Các công cụ của Python sườn Scipygives để tạo ma trận thưa thớt bằng nhiều cấu trúc dữ liệu, cũng như các công cụ để chuyển đổi ma trận dày đặc thành ma trận thưa thớt. Hàm csr_matrix () được sử dụng để tạo một ma trận thưa thớt của định dạng hàng thưa thớt trong khi CSC_MATRIX () được sử dụng để tạo một ma trận thưa thớt của định dạng cột thưa thớt.SciPygives tools for creating sparse matrices using multiple data structures, as well as tools for converting a dense matrix to a sparse matrix. The function csr_matrix() is used to create a sparse matrix of compressed sparse row format whereas csc_matrix() is used to create a sparse matrix of compressed sparse column format.

# Sử dụngcsr_matrix ()csr_matrix()

Syntax:

scipy.sparse.csr_matrix (Shape = none, dtype = none)(shape=None, dtype=None)

Parameters:

Hình dạng: Có được hình dạng của một ma trậnGet shape of a matrix

DTYPE: Kiểu dữ liệu của ma trậnData type of the matrix

Ví dụ 1:

Python

import numpy as np

from scipy.sparse import

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
0

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
1
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
3
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
4
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
6
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
7

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
8
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
9
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2
[[ 1  4  0]
 [ 8  0 11]
 [ 0  0  9]]
1

[[ 1  4  0]
 [ 8  0 11]
 [ 0  0  9]]
2
[[ 1  4  0]
 [ 8  0 11]
 [ 0  0  9]]
3

Output:

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]

Ví dụ 2:

Python

import numpy as np

from scipy.sparse import

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
0

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
1
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
3
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
4
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
6
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
7

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
8
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
9
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2
[[ 1  4  0]
 [ 8  0 11]
 [ 0  0  9]]
1

Ví dụ 2:

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
0
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
3
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
3
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
7
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
7
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5
[[ 1  4  0]
 [ 8  0 11]
 [ 0  0  9]]
1__15__15

[[ 1  4  0]
 [ 8  0 11]
 [ 0  0  9]]
5
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
3
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
7
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5____41
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
3
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5__415

[[ 1  4  0]
 [ 8  0 11]
 [ 0  0  9]]
2
[[ 1  4  0]
 [ 8  0 11]
 [ 0  0  9]]
3

Output:

[[ 1  4  0]
 [ 8  0 11]
 [ 0  0  9]]

numpy as np0
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
7
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
6
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5numpy as np7
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5numpy as np9
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5__7151515
csc_matrix()

Syntax:

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
1
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2 from7
(shape=None, dtype=None)

Parameters:

Hình dạng: Có được hình dạng của một ma trậnGet shape of a matrix

DTYPE: Kiểu dữ liệu của ma trậnData type of the matrix

Ví dụ 1:

Python

import numpy as np

from scipy.sparse import

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
0

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
1
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
3
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
4
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
6
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
7

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
8
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
9
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2
[[ 1  4  0]
 [ 8  0 11]
 [ 0  0  9]]
1

[[ 1  4  0]
 [ 8  0 11]
 [ 0  0  9]]
2
[[ 1  4  0]
 [ 8  0 11]
 [ 0  0  9]]
3

Output:

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]

Ví dụ 2:

Python

import numpy as np

from scipy.sparse import

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
0

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
1
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
3
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
4
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
6
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
7

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
8
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
9
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2
[[ 1  4  0]
 [ 8  0 11]
 [ 0  0  9]]
1

Ví dụ 2:

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
0
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
3
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
3
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
7
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
7
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5
[[ 1  4  0]
 [ 8  0 11]
 [ 0  0  9]]
1__15__15

[[ 1  4  0]
 [ 8  0 11]
 [ 0  0  9]]
5
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
2
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
3
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
7
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5____41
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
3
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
5__415

[[ 1  4  0]
 [ 8  0 11]
 [ 0  0  9]]
2
[[ 1  4  0]
 [ 8  0 11]
 [ 0  0  9]]
3

Output:

[[ 1  4  0]
 [ 8  0 11]
 [ 0  0  9]]

Làm thế nào để bạn thêm một ma trận thưa thớt trong Python?

Một cách đơn giản và hiệu quả để thêm ma trận thưa thớt là chuyển đổi chúng thành dạng bộ ba thưa thớt, nối các bộ ba, sau đó chuyển đổi trở lại định dạng cột thưa thớt.convert them to sparse triplet form, concatenate the triplets, and then convert back to sparse column format.

Làm thế nào để bạn xây dựng một ma trận thưa thớt?

Bạn có thể tạo một ma trận thưa thớt từ danh sách các phần tử khác biệt bằng cách sử dụng hàm thưa thớt với năm đối số ...
S = thưa thớt (i, j, s, m, n).
S = thưa thớt ([3 2 3 4 1], [1 2 2 3 4], [1 2 3 4 5], 4,4).
S = (3,1) 1 (2,2) 2 (3,2) 3 (4,3) 4 (1,4) 5 ..

Làm thế nào để bạn chuyển đổi dữ liệu thành ma trận thưa thớt trong Python?

Làm thế nào để bạn chuyển đổi dữ liệu thành ma trận thưa thớt trong Python ?..
Lặp qua từng hàng của một ma trận đầu vào ..
Lặp qua từng giá trị của mỗi hàng ..
If (value == 0) → bỏ qua ..
If (giá trị! = ....
Lưu kết quả dưới dạng [hàng, cột, giá trị] cho mỗi hàng và cột ..