Ma trận trong Python là gì

Một tình huống thường gặp trong học máy là có một lượng dữ liệu khổng lồ; . Ví dụ: hãy tưởng tượng một ma trận trong đó các cột là mọi bộ phim trên Netflix, các hàng là mọi người dùng Netflix và các giá trị là số lần người dùng đã xem bộ phim cụ thể đó. Ma trận này sẽ có hàng chục nghìn cột và hàng triệu hàng. Tuy nhiên, vì hầu hết người dùng không xem hầu hết các bộ phim nên phần lớn các yếu tố sẽ bằng không

Ma trận thưa thớt chỉ lưu trữ các phần tử khác không và giả sử tất cả các giá trị khác sẽ bằng 0, dẫn đến tiết kiệm đáng kể tính toán. Trong giải pháp của mình, chúng tôi đã tạo một mảng NumPy có hai giá trị khác không, sau đó chuyển đổi nó thành một ma trận thưa thớt. Nếu chúng ta xem ma trận thưa thớt, chúng ta có thể thấy rằng chỉ các giá trị khác không được lưu trữ

# View sparse matrix
print(matrix_sparse)
  (1, 1)    1
  (2, 0)    3

Có một số loại ma trận thưa thớt. Tuy nhiên, trong các ma trận hàng thưa thớt (CSR) được nén,

  (1, 1)    1
  (2, 0)    3
0 và
  (1, 1)    1
  (2, 0)    3
1 đại diện cho các chỉ số (được lập chỉ mục bằng 0) của các giá trị khác 0 lần lượt là
  (1, 1)    1
  (2, 0)    3
2 và
  (1, 1)    1
  (2, 0)    3
0. Ví dụ: phần tử
  (1, 1)    1
  (2, 0)    3
2 nằm ở hàng thứ hai và cột thứ hai. Chúng ta có thể thấy lợi thế của ma trận thưa thớt nếu chúng ta tạo một ma trận lớn hơn nhiều với nhiều phần tử 0 hơn và sau đó so sánh ma trận lớn hơn này với ma trận thưa thớt ban đầu của chúng ta

# Create larger matrix
matrix_large = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                         [0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
                         [3, 0, 0, 0, 0, 0, 0, 0, 0, 0]])

# Create compressed sparse row (CSR) matrix
matrix_large_sparse = sparse.csr_matrix(matrix_large)
# View original sparse matrix
print(matrix_sparse)
  (1, 1)    1
  (2, 0)    3
# View larger sparse matrix
print(matrix_large_sparse)
  (1, 1)    1
  (2, 0)    3

Như chúng ta có thể thấy, mặc dù thực tế là chúng ta đã thêm nhiều phần tử 0 hơn vào ma trận lớn hơn, biểu diễn thưa thớt của nó hoàn toàn giống với ma trận thưa thớt ban đầu của chúng ta. Nghĩa là, việc thêm các phần tử bằng 0 không làm thay đổi kích thước của ma trận thưa thớt

Như đã đề cập, có nhiều loại ma trận thưa thớt khác nhau, chẳng hạn như cột thưa thớt được nén, danh sách danh sách và từ điển khóa. Mặc dù phần giải thích về các loại khác nhau và ý nghĩa của chúng nằm ngoài phạm vi của cuốn sách này, nhưng điều đáng chú ý là mặc dù không có loại ma trận thưa thớt "tốt nhất" nhưng vẫn có những khác biệt có ý nghĩa giữa chúng và chúng ta nên ý thức về lý do tại sao.

Không nên sử dụng lớp này nữa, ngay cả đối với đại số tuyến tính. Thay vào đó hãy sử dụng các mảng thông thường. Lớp học có thể bị xóa trong tương lai

Trả về một ma trận từ một đối tượng dạng mảng hoặc từ một chuỗi dữ liệu. Ma trận là một mảng 2-D chuyên biệt vẫn giữ được bản chất 2-D của nó thông qua các hoạt động. Nó có một số toán tử đặc biệt, chẳng hạn như

  (1, 1)    1
  (2, 0)    3
4 (nhân ma trận) và
  (1, 1)    1
  (2, 0)    3
5 (lũy thừa ma trận)

Thông số . dữ liệu array_like hoặc chuỗi

Nếu là một chuỗi, nó được hiểu là một ma trận có dấu phẩy hoặc dấu cách ngăn cách các cột và dấu chấm phẩy ngăn cách các hàng

dtype loại dữ liệu

Kiểu dữ liệu của ma trận đầu ra

bản sao bool

Nếu đã là cờ , thì cờ này xác định liệu dữ liệu có được sao chép (mặc định) hay liệu chế độ xem có được tạo hay không

Xem thêm

ví dụ

________số 8

>>> np.matrix([[1, 2], [3, 4]])
matrix([[1, 2],
        [3, 4]])

Thuộc tính .

Trả lại bản thân như một đối tượng

Trả lại bản thân như một phẳng

Trả về chuyển vị liên hợp (phức tạp) của self

Trả về nghịch đảo (nhân) của tự nghịch đảo

Trả về chuyển vị của ma trận

Đối tượng cơ sở nếu bộ nhớ là từ một số đối tượng khác

Một đối tượng để đơn giản hóa sự tương tác của mảng với mô-đun ctypes

Đối tượng bộ đệm Python trỏ đến đầu dữ liệu của mảng

Kiểu dữ liệu của các phần tử trong mảng

Thông tin về cách bố trí bộ nhớ của mảng

Trình lặp 1-D trên mảng

Phần ảo của mảng

Độ dài của một phần tử mảng theo byte

Tổng số byte được sử dụng bởi các phần tử của mảng

Số kích thước mảng

Phần thực của mảng

Bộ kích thước mảng

Số phần tử trong mảng

Tuple byte để bước vào mỗi chiều khi duyệt qua một mảng

phương pháp

([trục, ra])

Kiểm tra xem tất cả các phần tử ma trận dọc theo một trục nhất định có đánh giá là True hay không

([trục, ra])

Kiểm tra xem bất kỳ phần tử mảng nào dọc theo một trục đã cho có đánh giá là True hay không

([trục, ra])

Chỉ số của các giá trị tối đa dọc theo một trục

([trục, ra])

Chỉ số của các giá trị tối thiểu dọc theo một trục

(kth[, trục, loại, thứ tự])

Trả về các chỉ số sẽ phân vùng mảng này

([trục, loại, thứ tự])

Trả về các chỉ số sẽ sắp xếp mảng này

(dtype[, order, casting, subok, copy])

Bản sao của mảng, chuyển sang một loại được chỉ định

([tại chỗ])

Hoán đổi byte của các phần tử mảng

(lựa chọn[, ngoài, chế độ])

Sử dụng một mảng chỉ mục để xây dựng một mảng mới từ một tập hợp các lựa chọn

([tối thiểu, tối đa, hết])

Trả về một mảng có giá trị giới hạn ở

  (1, 1)    1
  (2, 0)    3
59

(điều kiện[, trục, ngoài])

Trả về các lát đã chọn của mảng này dọc theo trục đã cho

()

Phức hợp-liên hợp tất cả các phần tử

()

Trả về liên hợp phức tạp, yếu tố khôn ngoan

([trật tự])

Trả về một bản sao của mảng

([axis, dtype, out])

Trả về tích lũy của các phần tử dọc theo trục đã cho

([axis, dtype, out])

Trả về tổng tích lũy của các phần tử dọc theo trục đã cho

([độ lệch, trục1, trục2])

Trả về các đường chéo đã chỉ định

(tập tin)

Kết xuất một mảng của mảng vào tệp đã chỉ định

()

Trả về dưa của mảng dưới dạng một chuỗi

(giá trị)

Điền vào mảng với một giá trị vô hướng

([trật tự])

Trả về một bản sao phẳng của ma trận

()

Trả lại bản thân như một đối tượng

()

Trả lại bản thân như một phẳng

()

Trả về chuyển vị liên hợp (phức tạp) của self

()

Trả về nghịch đảo (nhân) của tự nghịch đảo

()

Trả về chuyển vị của ma trận

(dtype[, offset])

Trả về một trường của mảng đã cho dưới dạng một loại nhất định

(* lập luận)

Sao chép một phần tử của một mảng sang một đại lượng Python tiêu chuẩn và trả về nó

(* lập luận)

Chèn vô hướng vào một mảng (vô hướng được chuyển thành dtype của mảng, nếu có thể)

([trục, ra])

Trả về giá trị lớn nhất dọc theo một trục

([axis, dtype, out])

Trả về giá trị trung bình của các phần tử ma trận dọc theo trục đã cho

([trục, ra])

Trả về giá trị nhỏ nhất dọc theo một trục

([đơn hàng mới])

Trả về mảng có cùng dữ liệu được xem với thứ tự byte khác

()

Trả về các chỉ số của các phần tử khác không

(kth[, trục, loại, thứ tự])

Sắp xếp lại các phần tử trong mảng sao cho giá trị của phần tử ở vị trí thứ k bằng vị trí của nó trong một mảng đã sắp xếp

Ma trận trong Python có nghĩa là gì?

Ma trận là cấu trúc dữ liệu hai chiều trong đó các số được sắp xếp thành hàng và cột . Ví dụ. Ma trận này là ma trận 3x4 (phát âm là "ba nhân bốn") vì nó có 3 hàng và 4 cột.

Là một ma trận giống như một mảng trong Python?

Ma trận là trường hợp đặc biệt của mảng hai chiều trong đó mỗi phần tử dữ liệu có cùng kích thước. Ma trận là một cấu trúc dữ liệu quan trọng cho nhiều tính toán toán học và khoa học. Mọi ma trận cũng là mảng hai chiều chứ không phải ngược lại .

Kiểu dữ liệu nào là ma trận trong Python?

Trong Python, Ma trận được biểu thị bằng kiểu dữ liệu danh sách . Chúng tôi sẽ hướng dẫn bạn cách tạo ma trận 3x3 bằng danh sách.

Ma trận có phải là một mảng NumPy không?

Lớp NumPy ndarray được sử dụng để biểu diễn cả ma trận và vectơ. Vectơ là một mảng có một chiều (không có sự khác biệt giữa vectơ hàng và cột), trong khi ma trận đề cập đến một mảng có hai chiều .