Ma trận hàng thưa thớt nén
Điều này có thể được khởi tạo theo nhiều cách: csr_matrix (d)với một ma trận dày đặc hoặc thứ hạng 2 ndarray D
csr_matrix(S)với một ma trận thưa thớt khác (tương đương với s.tocsr ())
csr_matrix ((m, n), [dtype])Để xây dựng một ma trận trống với hình dạng (m, n) dtype là tùy chọn, mặc định thành dtype = xông d.
csr_matrix ((data, (row_ind, col_ind)), [spape = (m, n)]))trong đó data, row_ind và col_ind thỏa mãn mối quan hệ a[row_ind[k], col_ind[k]] = data[k].
csr_matrix ((dữ liệu, chỉ số, indptr), [spape = (m, n)]))là biểu diễn CSR tiêu chuẩn trong đó các chỉ số cột cho hàng I được lưu trữ trong indices[indptr[i]:indptr[i+1]] và các giá trị tương ứng của chúng được lưu trữ trong >>> row = np.array([0, 0, 1, 2, 2, 2]) >>> col = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 0. Nếu tham số hình dạng không được cung cấp, kích thước ma trận được suy ra từ các mảng chỉ mục.
Ghi chú
Ma trận thưa thớt có thể được sử dụng trong các hoạt động số học: chúng hỗ trợ bổ sung, trừ, nhân, chia và công suất ma trận.
Ưu điểm của định dạng CSRHoạt động số học hiệu quả CSR + CSR, CSR * CSR, v.v.
Cắt hàng hiệu quả
Sản phẩm vector ma trận nhanh
Hoạt động cắt cột chậm (xem xét CSC)
Những thay đổi đối với cấu trúc thưa thớt rất tốn kém (xem xét lil hoặc dok)
Ví dụ
>>> import numpy as np >>> from scipy.sparse import csr_matrix >>> csr_matrix((3, 4), dtype=np.int8).toarray() array([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], dtype=int8)
>>> row = np.array([0, 0, 1, 2, 2, 2]) >>> col = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]])
>>> indptr = np.array([0, 2, 3, 6]) >>> indices = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, indices, indptr), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]])
Các mục trùng lặp được tổng hợp với nhau:
>>> row = np.array([0, 1, 2, 0]) >>> col = np.array([0, 1, 1, 0]) >>> data = np.array([1, 2, 4, 8]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[9, 0, 0], [0, 2, 0], [0, 4, 0]])
Như một ví dụ về cách xây dựng ma trận CSR tăng dần, đoạn trích sau đây xây dựng một ma trận tài liệu thuật ngữ từ các văn bản:
>>> docs = [["hello", "world", "hello"], ["goodbye", "cruel", "world"]] >>> indptr = [0] >>> indices = [] >>> data = [] >>> vocabulary = {} >>> for d in docs: ... for term in d: ... index = vocabulary.setdefault(term, len(vocabulary)) ... indices.append(index) ... data.append(1) ... indptr.append(len(indices)) ... >>> csr_matrix((data, indices, indptr), dtype=int).toarray() array([[2, 1, 0, 0], [0, 1, 1, 1]])
Thuộc tínhDtypedTypedtypedtypeKiểu dữ liệu của ma trận
>>> row = np.array([0, 0, 1, 2, 2, 2]) >>> col = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 12-tuple2-tupleCó được hình dạng của một ma trận.
ndimintintSố lượng kích thước (đây luôn là 2)
>>> row = np.array([0, 0, 1, 2, 2, 2]) >>> col = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 2Số lượng các giá trị được lưu trữ, bao gồm các số không rõ ràng.
dữ liệuMảng dữ liệu định dạng CSR của ma trận
chỉ sốMảng chỉ số định dạng CSR của ma trận
IndptrMảng con trỏ chỉ số CSR của Ma trận
>>> row = np.array([0, 0, 1, 2, 2, 2]) >>> col = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 3Xác định xem ma trận đã sắp xếp các chỉ số
Phương pháp
>>> row = np.array([0, 0, 1, 2, 2, 2]) >>> col = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 4() | |
>>> row = np.array([0, 0, 1, 2, 2, 2]) >>> col = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 5() | Vòng cung yếu tố khôn ngoan. |
>>> row = np.array([0, 0, 1, 2, 2, 2]) >>> col = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 6() | Vòng cung yếu tố khôn ngoan. |
>>> row = np.array([0, 0, 1, 2, 2, 2]) >>> col = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 7() | Yếu tố khôn ngoan Arctan. |
>>> row = np.array([0, 0, 1, 2, 2, 2]) >>> col = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 8() | Nguyên tố khôn ngoan Arctanh. |
>>> row = np.array([0, 0, 1, 2, 2, 2]) >>> col = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 9([axis, out]) | Trả về các chỉ số của các phần tử tối đa dọc theo một trục. |
>>> indptr = np.array([0, 2, 3, 6]) >>> indices = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, indices, indptr), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 0([axis, out]) | Trả về các chỉ số của các phần tử tối thiểu dọc theo một trục. |
>>> indptr = np.array([0, 2, 3, 6]) >>> indices = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, indices, indptr), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 1(format[, copy]) | Trả lại ma trận này ở định dạng đã qua. |
>>> indptr = np.array([0, 2, 3, 6]) >>> indices = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, indices, indptr), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 2() | Ma trận upcast đến định dạng điểm nổi (nếu cần) |
>>> indptr = np.array([0, 2, 3, 6]) >>> indices = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, indices, indptr), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 3(dtype[, casting, copy]) | Đúc các phần tử ma trận thành một loại được chỉ định. |
>>> indptr = np.array([0, 2, 3, 6]) >>> indices = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, indices, indptr), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 4() | Trân trọng yếu tố. |
>>> indptr = np.array([0, 2, 3, 6]) >>> indices = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, indices, indptr), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 5([full_check]) | Kiểm tra xem định dạng ma trận có hợp lệ không |
>>> indptr = np.array([0, 2, 3, 6]) >>> indices = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, indices, indptr), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 6([copy]) | Liên hợp phức tạp nguyên tố. |
>>> indptr = np.array([0, 2, 3, 6]) >>> indices = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, indices, indptr), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 7([copy]) | Liên hợp phức tạp nguyên tố. |
>>> indptr = np.array([0, 2, 3, 6]) >>> indices = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, indices, indptr), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 8() | Trả về một bản sao của ma trận này. |
>>> indptr = np.array([0, 2, 3, 6]) >>> indices = np.array([0, 2, 2, 0, 1, 2]) >>> data = np.array([1, 2, 3, 4, 5, 6]) >>> csr_matrix((data, indices, indptr), shape=(3, 3)).toarray() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]]) 9() | Số lượng mục không khác, tương đương với |
>>> row = np.array([0, 1, 2, 0]) >>> col = np.array([0, 1, 1, 0]) >>> data = np.array([1, 2, 4, 8]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[9, 0, 0], [0, 2, 0], [0, 4, 0]]) 0() | Yếu tố khôn ngoan deg2rad. |
>>> row = np.array([0, 1, 2, 0]) >>> col = np.array([0, 1, 1, 0]) >>> data = np.array([1, 2, 4, 8]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[9, 0, 0], [0, 2, 0], [0, 4, 0]]) 1([k]) | Trả về đường chéo thứ k của ma trận. |
>>> row = np.array([0, 1, 2, 0]) >>> col = np.array([0, 1, 1, 0]) >>> data = np.array([1, 2, 4, 8]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[9, 0, 0], [0, 2, 0], [0, 4, 0]]) 2(other) | Sản phẩm chấm thông thường |
>>> row = np.array([0, 1, 2, 0]) >>> col = np.array([0, 1, 1, 0]) >>> data = np.array([1, 2, 4, 8]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[9, 0, 0], [0, 2, 0], [0, 4, 0]]) 3() | Xóa các mục không ra khỏi ma trận |
>>> row = np.array([0, 1, 2, 0]) >>> col = np.array([0, 1, 1, 0]) >>> data = np.array([1, 2, 4, 8]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[9, 0, 0], [0, 2, 0], [0, 4, 0]]) 4() | Phần tử expm1 khôn ngoan. |
>>> row = np.array([0, 1, 2, 0]) >>> col = np.array([0, 1, 1, 0]) >>> data = np.array([1, 2, 4, 8]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[9, 0, 0], [0, 2, 0], [0, 4, 0]]) 5() | Sàn yếu tố khôn ngoan. |
>>> row = np.array([0, 1, 2, 0]) >>> col = np.array([0, 1, 1, 0]) >>> data = np.array([1, 2, 4, 8]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[9, 0, 0], [0, 2, 0], [0, 4, 0]]) 6() | Trả lại sự chuyển đổi Hermiti của ma trận này. |
>>> row = np.array([0, 1, 2, 0]) >>> col = np.array([0, 1, 1, 0]) >>> data = np.array([1, 2, 4, 8]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[9, 0, 0], [0, 2, 0], [0, 4, 0]]) 7() | Có được hình dạng của một ma trận. |
>>> row = np.array([0, 1, 2, 0]) >>> col = np.array([0, 1, 1, 0]) >>> data = np.array([1, 2, 4, 8]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[9, 0, 0], [0, 2, 0], [0, 4, 0]]) 8(i) | ndimint |
>>> row = np.array([0, 1, 2, 0]) >>> col = np.array([0, 1, 1, 0]) >>> data = np.array([1, 2, 4, 8]) >>> csr_matrix((data, (row, col)), shape=(3, 3)).toarray() array([[9, 0, 0], [0, 2, 0], [0, 4, 0]]) 9() | Số lượng kích thước (đây luôn là 2) |
>>> docs = [["hello", "world", "hello"], ["goodbye", "cruel", "world"]] >>> indptr = [0] >>> indices = [] >>> data = [] >>> vocabulary = {} >>> for d in docs: ... for term in d: ... index = vocabulary.setdefault(term, len(vocabulary)) ... indices.append(index) ... data.append(1) ... indptr.append(len(indices)) ... >>> csr_matrix((data, indices, indptr), dtype=int).toarray() array([[2, 1, 0, 0], [0, 1, 1, 1]]) 0() | Số lượng các giá trị được lưu trữ, bao gồm các số không rõ ràng. |
>>> docs = [["hello", "world", "hello"], ["goodbye", "cruel", "world"]] >>> indptr = [0] >>> indices = [] >>> data = [] >>> vocabulary = {} >>> for d in docs: ... for term in d: ... index = vocabulary.setdefault(term, len(vocabulary)) ... indices.append(index) ... data.append(1) ... indptr.append(len(indices)) ... >>> csr_matrix((data, indices, indptr), dtype=int).toarray() array([[2, 1, 0, 0], [0, 1, 1, 1]]) 1([axis]) | Số lượng các giá trị được lưu trữ, bao gồm các số không rõ ràng. |
>>> docs = [["hello", "world", "hello"], ["goodbye", "cruel", "world"]] >>> indptr = [0] >>> indices = [] >>> data = [] >>> vocabulary = {} >>> for d in docs: ... for term in d: ... index = vocabulary.setdefault(term, len(vocabulary)) ... indices.append(index) ... data.append(1) ... indptr.append(len(indices)) ... >>> csr_matrix((data, indices, indptr), dtype=int).toarray() array([[2, 1, 0, 0], [0, 1, 1, 1]]) 2(i) | dữ liệu |
>>> docs = [["hello", "world", "hello"], ["goodbye", "cruel", "world"]] >>> indptr = [0] >>> indices = [] >>> data = [] >>> vocabulary = {} >>> for d in docs: ... for term in d: ... index = vocabulary.setdefault(term, len(vocabulary)) ... indices.append(index) ... data.append(1) ... indptr.append(len(indices)) ... >>> csr_matrix((data, indices, indptr), dtype=int).toarray() array([[2, 1, 0, 0], [0, 1, 1, 1]]) 3() | Mảng dữ liệu định dạng CSR của ma trận |
>>> docs = [["hello", "world", "hello"], ["goodbye", "cruel", "world"]] >>> indptr = [0] >>> indices = [] >>> data = [] >>> vocabulary = {} >>> for d in docs: ... for term in d: ... index = vocabulary.setdefault(term, len(vocabulary)) ... indices.append(index) ... data.append(1) ... indptr.append(len(indices)) ... >>> csr_matrix((data, indices, indptr), dtype=int).toarray() array([[2, 1, 0, 0], [0, 1, 1, 1]]) 4([axis, out]) | chỉ số |
>>> docs = [["hello", "world", "hello"], ["goodbye", "cruel", "world"]] >>> indptr = [0] >>> indices = [] >>> data = [] >>> vocabulary = {} >>> for d in docs: ... for term in d: ... index = vocabulary.setdefault(term, len(vocabulary)) ... indices.append(index) ... data.append(1) ... indptr.append(len(indices)) ... >>> csr_matrix((data, indices, indptr), dtype=int).toarray() array([[2, 1, 0, 0], [0, 1, 1, 1]]) 5(other) | Mảng chỉ số định dạng CSR của ma trận |
>>> docs = [["hello", "world", "hello"], ["goodbye", "cruel", "world"]] >>> indptr = [0] >>> indices = [] >>> data = [] >>> vocabulary = {} >>> for d in docs: ... for term in d: ... index = vocabulary.setdefault(term, len(vocabulary)) ... indices.append(index) ... data.append(1) ... indptr.append(len(indices)) ... >>> csr_matrix((data, indices, indptr), dtype=int).toarray() array([[2, 1, 0, 0], [0, 1, 1, 1]]) 6([axis, dtype, out]) | Indptr |
>>> docs = [["hello", "world", "hello"], ["goodbye", "cruel", "world"]] >>> indptr = [0] >>> indices = [] >>> data = [] >>> vocabulary = {} >>> for d in docs: ... for term in d: ... index = vocabulary.setdefault(term, len(vocabulary)) ... indices.append(index) ... data.append(1) ... indptr.append(len(indices)) ... >>> csr_matrix((data, indices, indptr), dtype=int).toarray() array([[2, 1, 0, 0], [0, 1, 1, 1]]) 7([axis, out]) | Mảng con trỏ chỉ số CSR của Ma trận |
>>> docs = [["hello", "world", "hello"], ["goodbye", "cruel", "world"]] >>> indptr = [0] >>> indices = [] >>> data = [] >>> vocabulary = {} >>> for d in docs: ... for term in d: ... index = vocabulary.setdefault(term, len(vocabulary)) ... indices.append(index) ... data.append(1) ... indptr.append(len(indices)) ... >>> csr_matrix((data, indices, indptr), dtype=int).toarray() array([[2, 1, 0, 0], [0, 1, 1, 1]]) 8(other) | Xác định xem ma trận đã sắp xếp các chỉ số |
>>> docs = [["hello", "world", "hello"], ["goodbye", "cruel", "world"]] >>> indptr = [0] >>> indices = [] >>> data = [] >>> vocabulary = {} >>> for d in docs: ... for term in d: ... index = vocabulary.setdefault(term, len(vocabulary)) ... indices.append(index) ... data.append(1) ... indptr.append(len(indices)) ... >>> csr_matrix((data, indices, indptr), dtype=int).toarray() array([[2, 1, 0, 0], [0, 1, 1, 1]]) 9(other) | Phương pháp |
data0() | Vòng cung yếu tố khôn ngoan. |
data1(n[, dtype]) | Vòng cung yếu tố khôn ngoan. |
data2() | Yếu tố khôn ngoan Arctan. |
data3() | Nguyên tố khôn ngoan Arctanh. |
data4(self, shape[, order, copy]) | Trả về các chỉ số của các phần tử tối đa dọc theo một trục. |
data5(*shape) | Trả về các chỉ số của các phần tử tối thiểu dọc theo một trục. |
data7() | Trả lại ma trận này ở định dạng đã qua. |
data8(shape) | Ma trận upcast đến định dạng điểm nổi (nếu cần) |
row_ind0(values[, k]) | Đúc các phần tử ma trận thành một loại được chỉ định. |
row_ind1() | Trân trọng yếu tố. |
row_ind2() | Kiểm tra xem định dạng ma trận có hợp lệ không |
row_ind3() | Liên hợp phức tạp nguyên tố. |
row_ind4() | Trả về một bản sao của ma trận này. |
row_ind5() | Trả về một bản sao của ma trận này với các chỉ số được sắp xếp |
row_ind6() | Yếu tố khôn ngoan sqrt. |
row_ind7([axis, dtype, out]) | Tổng các phần tử ma trận trên một trục nhất định. |
row_ind8() | Loại bỏ các mục Ma trận trùng lặp bằng cách thêm chúng lại với nhau |
row_ind9() | Yếu tố rám nắng. |
col_ind0() | Tanh nguyên tố khôn ngoan. |
col_ind1([order, out]) | Trả về một đại diện ndarray dày đặc của ma trận này. |
col_ind2([blocksize, copy]) | Chuyển đổi ma trận này để chặn định dạng hàng thưa thớt. |
col_ind3([copy]) | Chuyển đổi ma trận này thành định dạng phối hợp. |
col_ind4([copy]) | Chuyển đổi ma trận này thành định dạng cột thưa thớt. |
col_ind5([copy]) | Chuyển đổi ma trận này thành định dạng hàng thưa thớt. |
col_ind6([order, out]) | Trả về một đại diện ma trận dày đặc của ma trận này. |
col_ind7([copy]) | Chuyển đổi ma trận này thành định dạng đường chéo thưa thớt. |
col_ind8([copy]) | Chuyển đổi ma trận này thành từ điển của định dạng khóa. |
col_ind9([copy]) | Chuyển đổi ma trận này thành danh sách các định dạng danh sách. |
a[row_ind[k], col_ind[k]] = data[k]0([offset]) | Trả về tổng dọc theo các đường chéo của ma trận thưa thớt. |
a[row_ind[k], col_ind[k]] = data[k]1([axes, copy]) | Đảo ngược các kích thước của ma trận thưa thớt. |
a[row_ind[k], col_ind[k]] = data[k]2() | Phần tử khôn ngoan. |
__getitem__ | |
__mul__ |