Tôi đã tìm ra cách thực thi nó trong Python:
nnz= len[value]
rows= max [row_index]+1
csr_row=[0]*[rows+1]
for i in range[nnz]:
csr_row[coo_row[i]+1]=csr_row[coo_row[i]+1]+1
for i in range[rows]:
csr_row[i+1]=csr_row[i+1]+csr_row[i]
print["after: " , csr_row] # this helps the user follow along
Output:
after: [0, 2, 1, 3]
after: [0, 2, 3, 3]
after: [0, 2, 3, 6]
Một ma trận thưa thớt ở định dạng tọa độ.
Còn được gọi là định dạng ‘IJV, hoặc‘ Triplet Triplet.
Điều này có thể được khởi tạo theo nhiều cách: COO_Matrix [D]với một ma trận dày đặc d
coo_matrix[S]với một ma trận thưa thớt khác [tương đương với s.tocoo []]
COO_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.
COO_Matrix [[dữ liệu, [i, j]], [hình dạng = [m, n]]] để xây dựng từ ba mảng:Dữ liệu [:] Các mục của ma trận, theo mọi thứ tự
I [:] Các chỉ số hàng của các mục Ma trận
J [:] Các chỉ số cột của các mục Ma trận
Trong đó A[i[k], j[k]] = data[k]
. Khi hình dạng không được chỉ định, 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 COOtạo điều kiện chuyển đổi nhanh giữa các định dạng thưa thớt
cho phép các mục trùng lặp [xem ví dụ]
Chuyển đổi rất nhanh sang và từ các định dạng CSR/CSC
- không hỗ trợ trực tiếp:
các phép tính toán học
cắt lát
COO là một định dạng nhanh để xây dựng ma trận thưa thớt
Khi một ma trận đã được xây dựng, chuyển đổi thành định dạng CSR hoặc CSC cho các hoạt động vector số học và ma trận nhanh
Theo mặc định khi chuyển đổi sang định dạng CSR hoặc CSC, các mục trùng lặp [i, j] sẽ được tổng hợp lại với nhau. Điều này tạo điều kiện xây dựng hiệu quả các ma trận phần tử hữu hạn và tương tự. [Xem ví dụ]
Ví dụ
>>> # Constructing an empty matrix >>> from scipy.sparse import coo_matrix >>> coo_matrix[[3, 4], dtype=np.int8].toarray[] array[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], dtype=int8]
>>> # Constructing a matrix using ijv format >>> row = np.array[[0, 3, 1, 0]] >>> col = np.array[[0, 3, 1, 2]] >>> data = np.array[[4, 5, 7, 9]] >>> coo_matrix[[data, [row, col]], shape=[4, 4]].toarray[] array[[[4, 0, 9, 0], [0, 7, 0, 0], [0, 0, 0, 0], [0, 0, 0, 5]]]
>>> # Constructing a matrix with duplicate indices >>> row = np.array[[0, 0, 1, 3, 1, 0, 0]] >>> col = np.array[[0, 2, 1, 3, 1, 0, 0]] >>> data = np.array[[1, 1, 1, 1, 1, 1, 1]] >>> coo = coo_matrix[[data, [row, col]], shape=[4, 4]] >>> # Duplicate indices are maintained until implicitly or explicitly summed >>> np.max[coo.data] 1 >>> coo.toarray[] array[[[3, 0, 1, 0], [0, 2, 0, 0], [0, 0, 0, 0], [0, 0, 0, 1]]]Thuộc tínhDtypedTypedtypedtype
Kiểu dữ liệu của ma trận
shape
2-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]
nnz
Số 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 COO của ma trận
hàng ngangMảng chỉ mục hàng định dạng COO của ma trận
colMảng chỉ số cột định dạng COO của ma trận
Phương pháp
| |
| Vòng cung yếu tố khôn ngoan. |
0[]
| Vòng cung yếu tố khôn ngoan. |
1[] | Yếu tố khôn ngoan Arctan. |
2[]
| Nguyên tố khôn ngoan Arctanh. |
3[[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. |
4[[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. |
5[format[, copy]]
| Trả lại ma trận này ở định dạng đã qua. |
6[]
| Ma trận upcast đến định dạng điểm nổi [nếu cần] |
7[dtype[, casting, copy]]
| Đúc các phần tử ma trận thành một loại được chỉ định. |
8[]
| Trân trọng yếu tố. |
9[[copy]]
| Liên hợp phức tạp nguyên tố. |
>>> # Constructing an empty matrix >>> from scipy.sparse import coo_matrix >>> coo_matrix[[3, 4], dtype=np.int8].toarray[] array[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], dtype=int8]0[[copy]] | Liên hợp phức tạp nguyên tố. |
>>> # Constructing an empty matrix >>> from scipy.sparse import coo_matrix >>> coo_matrix[[3, 4], dtype=np.int8].toarray[] array[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], dtype=int8]1[] | Trả về một bản sao của ma trận này. |
>>> # Constructing an empty matrix >>> from scipy.sparse import coo_matrix >>> coo_matrix[[3, 4], dtype=np.int8].toarray[] array[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], dtype=int8]2[] | Số lượng mục không khác, tương đương với |
>>> # Constructing an empty matrix >>> from scipy.sparse import coo_matrix >>> coo_matrix[[3, 4], dtype=np.int8].toarray[] array[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], dtype=int8]3[] | Yếu tố khôn ngoan deg2rad. |
>>> # Constructing an empty matrix >>> from scipy.sparse import coo_matrix >>> coo_matrix[[3, 4], dtype=np.int8].toarray[] array[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], dtype=int8]4[[k]] | Trả về đường chéo thứ k của ma trận. |
>>> # Constructing an empty matrix >>> from scipy.sparse import coo_matrix >>> coo_matrix[[3, 4], dtype=np.int8].toarray[] array[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], dtype=int8]5[other] | Sản phẩm chấm thông thường |
>>> # Constructing an empty matrix >>> from scipy.sparse import coo_matrix >>> coo_matrix[[3, 4], dtype=np.int8].toarray[] array[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], dtype=int8]6[] | Xóa các mục không ra khỏi ma trận |
>>> # Constructing an empty matrix >>> from scipy.sparse import coo_matrix >>> coo_matrix[[3, 4], dtype=np.int8].toarray[] array[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], dtype=int8]7[] | Phần tử expm1 khôn ngoan. |
>>> # Constructing an empty matrix >>> from scipy.sparse import coo_matrix >>> coo_matrix[[3, 4], dtype=np.int8].toarray[] array[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], dtype=int8]8[] | Sàn yếu tố khôn ngoan. |
>>> # Constructing an empty matrix >>> from scipy.sparse import coo_matrix >>> coo_matrix[[3, 4], dtype=np.int8].toarray[] array[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], dtype=int8]9[] | Trả lại sự chuyển đổi Hermiti của ma trận này. |
>>> # Constructing a matrix using ijv format >>> row = np.array[[0, 3, 1, 0]] >>> col = np.array[[0, 3, 1, 2]] >>> data = np.array[[4, 5, 7, 9]] >>> coo_matrix[[data, [row, col]], shape=[4, 4]].toarray[] array[[[4, 0, 9, 0], [0, 7, 0, 0], [0, 0, 0, 0], [0, 0, 0, 5]]]0[] | Có được hình dạng của một ma trận. |
>>> # Constructing a matrix using ijv format >>> row = np.array[[0, 3, 1, 0]] >>> col = np.array[[0, 3, 1, 2]] >>> data = np.array[[4, 5, 7, 9]] >>> coo_matrix[[data, [row, col]], shape=[4, 4]].toarray[] array[[[4, 0, 9, 0], [0, 7, 0, 0], [0, 0, 0, 0], [0, 0, 0, 5]]]1[j] | ndimint |
>>> # Constructing a matrix using ijv format >>> row = np.array[[0, 3, 1, 0]] >>> col = np.array[[0, 3, 1, 2]] >>> data = np.array[[4, 5, 7, 9]] >>> coo_matrix[[data, [row, col]], shape=[4, 4]].toarray[] array[[[4, 0, 9, 0], [0, 7, 0, 0], [0, 0, 0, 0], [0, 0, 0, 5]]]2[] | Số lượng kích thước [đây luôn là 2] |
>>> # Constructing a matrix using ijv format >>> row = np.array[[0, 3, 1, 0]] >>> col = np.array[[0, 3, 1, 2]] >>> data = np.array[[4, 5, 7, 9]] >>> coo_matrix[[data, [row, col]], shape=[4, 4]].toarray[] array[[[4, 0, 9, 0], [0, 7, 0, 0], [0, 0, 0, 0], [0, 0, 0, 5]]]3[] | Số lượng các giá trị được lưu trữ, bao gồm các số không rõ ràng. |
>>> # Constructing a matrix using ijv format >>> row = np.array[[0, 3, 1, 0]] >>> col = np.array[[0, 3, 1, 2]] >>> data = np.array[[4, 5, 7, 9]] >>> coo_matrix[[data, [row, col]], shape=[4, 4]].toarray[] array[[[4, 0, 9, 0], [0, 7, 0, 0], [0, 0, 0, 0], [0, 0, 0, 5]]]4[[axis]] | Số lượng các giá trị được lưu trữ, bao gồm các số không rõ ràng. |
>>> # Constructing a matrix using ijv format >>> row = np.array[[0, 3, 1, 0]] >>> col = np.array[[0, 3, 1, 2]] >>> data = np.array[[4, 5, 7, 9]] >>> coo_matrix[[data, [row, col]], shape=[4, 4]].toarray[] array[[[4, 0, 9, 0], [0, 7, 0, 0], [0, 0, 0, 0], [0, 0, 0, 5]]]5[i] | dữ liệu |
>>> # Constructing a matrix using ijv format >>> row = np.array[[0, 3, 1, 0]] >>> col = np.array[[0, 3, 1, 2]] >>> data = np.array[[4, 5, 7, 9]] >>> coo_matrix[[data, [row, col]], shape=[4, 4]].toarray[] array[[[4, 0, 9, 0], [0, 7, 0, 0], [0, 0, 0, 0], [0, 0, 0, 5]]]6[] | Mảng dữ liệu định dạng COO của ma trận |
>>> # Constructing a matrix using ijv format >>> row = np.array[[0, 3, 1, 0]] >>> col = np.array[[0, 3, 1, 2]] >>> data = np.array[[4, 5, 7, 9]] >>> coo_matrix[[data, [row, col]], shape=[4, 4]].toarray[] array[[[4, 0, 9, 0], [0, 7, 0, 0], [0, 0, 0, 0], [0, 0, 0, 5]]]7[[axis, out]] | hàng ngang |
>>> # Constructing a matrix using ijv format >>> row = np.array[[0, 3, 1, 0]] >>> col = np.array[[0, 3, 1, 2]] >>> data = np.array[[4, 5, 7, 9]] >>> coo_matrix[[data, [row, col]], shape=[4, 4]].toarray[] array[[[4, 0, 9, 0], [0, 7, 0, 0], [0, 0, 0, 0], [0, 0, 0, 5]]]8[other] | Mảng chỉ mục hàng định dạng COO của ma trận |
>>> # Constructing a matrix using ijv format >>> row = np.array[[0, 3, 1, 0]] >>> col = np.array[[0, 3, 1, 2]] >>> data = np.array[[4, 5, 7, 9]] >>> coo_matrix[[data, [row, col]], shape=[4, 4]].toarray[] array[[[4, 0, 9, 0], [0, 7, 0, 0], [0, 0, 0, 0], [0, 0, 0, 5]]]9[[axis, dtype, out]] | col |
>>> # Constructing a matrix with duplicate indices >>> row = np.array[[0, 0, 1, 3, 1, 0, 0]] >>> col = np.array[[0, 2, 1, 3, 1, 0, 0]] >>> data = np.array[[1, 1, 1, 1, 1, 1, 1]] >>> coo = coo_matrix[[data, [row, col]], shape=[4, 4]] >>> # Duplicate indices are maintained until implicitly or explicitly summed >>> np.max[coo.data] 1 >>> coo.toarray[] array[[[3, 0, 1, 0], [0, 2, 0, 0], [0, 0, 0, 0], [0, 0, 0, 1]]]0[[axis, out]] | Mảng chỉ số cột định dạng COO của ma trận |
>>> # Constructing a matrix with duplicate indices >>> row = np.array[[0, 0, 1, 3, 1, 0, 0]] >>> col = np.array[[0, 2, 1, 3, 1, 0, 0]] >>> data = np.array[[1, 1, 1, 1, 1, 1, 1]] >>> coo = coo_matrix[[data, [row, col]], shape=[4, 4]] >>> # Duplicate indices are maintained until implicitly or explicitly summed >>> np.max[coo.data] 1 >>> coo.toarray[] array[[[3, 0, 1, 0], [0, 2, 0, 0], [0, 0, 0, 0], [0, 0, 0, 1]]]1[other] | Phương pháp |
>>> # Constructing a matrix with duplicate indices >>> row = np.array[[0, 0, 1, 3, 1, 0, 0]] >>> col = np.array[[0, 2, 1, 3, 1, 0, 0]] >>> data = np.array[[1, 1, 1, 1, 1, 1, 1]] >>> coo = coo_matrix[[data, [row, col]], shape=[4, 4]] >>> # Duplicate indices are maintained until implicitly or explicitly summed >>> np.max[coo.data] 1 >>> coo.toarray[] array[[[3, 0, 1, 0], [0, 2, 0, 0], [0, 0, 0, 0], [0, 0, 0, 1]]]2[other] | Vòng cung yếu tố khôn ngoan. |
>>> # Constructing a matrix with duplicate indices >>> row = np.array[[0, 0, 1, 3, 1, 0, 0]] >>> col = np.array[[0, 2, 1, 3, 1, 0, 0]] >>> data = np.array[[1, 1, 1, 1, 1, 1, 1]] >>> coo = coo_matrix[[data, [row, col]], shape=[4, 4]] >>> # Duplicate indices are maintained until implicitly or explicitly summed >>> np.max[coo.data] 1 >>> coo.toarray[] array[[[3, 0, 1, 0], [0, 2, 0, 0], [0, 0, 0, 0], [0, 0, 0, 1]]]3[] | Vòng cung yếu tố khôn ngoan. |
>>> # Constructing a matrix with duplicate indices >>> row = np.array[[0, 0, 1, 3, 1, 0, 0]] >>> col = np.array[[0, 2, 1, 3, 1, 0, 0]] >>> data = np.array[[1, 1, 1, 1, 1, 1, 1]] >>> coo = coo_matrix[[data, [row, col]], shape=[4, 4]] >>> # Duplicate indices are maintained until implicitly or explicitly summed >>> np.max[coo.data] 1 >>> coo.toarray[] array[[[3, 0, 1, 0], [0, 2, 0, 0], [0, 0, 0, 0], [0, 0, 0, 1]]]4[n[, dtype]] | Yếu tố khôn ngoan Arctan. |
>>> # Constructing a matrix with duplicate indices >>> row = np.array[[0, 0, 1, 3, 1, 0, 0]] >>> col = np.array[[0, 2, 1, 3, 1, 0, 0]] >>> data = np.array[[1, 1, 1, 1, 1, 1, 1]] >>> coo = coo_matrix[[data, [row, col]], shape=[4, 4]] >>> # Duplicate indices are maintained until implicitly or explicitly summed >>> np.max[coo.data] 1 >>> coo.toarray[] array[[[3, 0, 1, 0], [0, 2, 0, 0], [0, 0, 0, 0], [0, 0, 0, 1]]]5[] | Nguyên tố khôn ngoan Arctanh. |
>>> # Constructing a matrix with duplicate indices >>> row = np.array[[0, 0, 1, 3, 1, 0, 0]] >>> col = np.array[[0, 2, 1, 3, 1, 0, 0]] >>> data = np.array[[1, 1, 1, 1, 1, 1, 1]] >>> coo = coo_matrix[[data, [row, col]], shape=[4, 4]] >>> # Duplicate indices are maintained until implicitly or explicitly summed >>> np.max[coo.data] 1 >>> coo.toarray[] array[[[3, 0, 1, 0], [0, 2, 0, 0], [0, 0, 0, 0], [0, 0, 0, 1]]]6[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. |
>>> # Constructing a matrix with duplicate indices >>> row = np.array[[0, 0, 1, 3, 1, 0, 0]] >>> col = np.array[[0, 2, 1, 3, 1, 0, 0]] >>> data = np.array[[1, 1, 1, 1, 1, 1, 1]] >>> coo = coo_matrix[[data, [row, col]], shape=[4, 4]] >>> # Duplicate indices are maintained until implicitly or explicitly summed >>> np.max[coo.data] 1 >>> coo.toarray[] array[[[3, 0, 1, 0], [0, 2, 0, 0], [0, 0, 0, 0], [0, 0, 0, 1]]]7[*shape] | Thay đổi kích thước ma trận tại chỗ theo kích thước được đưa ra bởi |
>>> # Constructing a matrix with duplicate indices >>> row = np.array[[0, 0, 1, 3, 1, 0, 0]] >>> col = np.array[[0, 2, 1, 3, 1, 0, 0]] >>> data = np.array[[1, 1, 1, 1, 1, 1, 1]] >>> coo = coo_matrix[[data, [row, col]], shape=[4, 4]] >>> # Duplicate indices are maintained until implicitly or explicitly summed >>> np.max[coo.data] 1 >>> coo.toarray[] array[[[3, 0, 1, 0], [0, 2, 0, 0], [0, 0, 0, 0], [0, 0, 0, 1]]]9[] | Rint yếu tố. |
| Xem >>> # Constructing a matrix with duplicate indices >>> row = np.array[[0, 0, 1, 3, 1, 0, 0]] >>> col = np.array[[0, 2, 1, 3, 1, 0, 0]] >>> data = np.array[[1, 1, 1, 1, 1, 1, 1]] >>> coo = coo_matrix[[data, [row, col]], shape=[4, 4]] >>> # Duplicate indices are maintained until implicitly or explicitly summed >>> np.max[coo.data] 1 >>> coo.toarray[] array[[[3, 0, 1, 0], [0, 2, 0, 0], [0, 0, 0, 0], [0, 0, 0, 1]]]6. |
| Đặt các phần tử chéo hoặc ngoài đường chéo của mảng. |
| Dấu hiệu yếu tố khôn ngoan. |
| Tội lỗi yếu tố. |
| Sinh tố khôn ngoan. |
| Yếu tố khôn ngoan sqrt. |
| Tổng các phần tử ma trận trên một trục nhất định. |
| 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 |
| Yếu tố rám nắng. |
| Tanh nguyên tố khôn ngoan. |
| Xem DocString cho |
| Chuyển đổi ma trận này để chặn định dạng hàng thưa thớt. |
| Chuyển đổi ma trận này thành định dạng phối hợp. |
| Chuyển đổi ma trận này thành định dạng cột thưa thớt nén |
| Chuyển đổi ma trận này thành định dạng hàng thưa thớt nén |
| Trả về một đại diện ma trận dày đặc của ma trận này. |
| Chuyển đổi ma trận này thành định dạng đường chéo thưa thớt. |
| Chuyển đổi ma trận này thành từ điển của định dạng khóa. |
| Chuyển đổi ma trận này thành danh sách các định dạng danh sách. |
| Trả về tổng dọc theo các đường chéo của ma trận thưa thớt. |
| Đảo ngược các kích thước của ma trận thưa thớt. |
| Phần tử khôn ngoan. |
__mul__ |