Hướng dẫn how do i save a sparse matrix in python? - làm cách nào để lưu ma trận thưa thớt trong python?
Lưu ma trận thưa thớt vào một tệp bằng định dạng Show
Tên tệp (chuỗi) hoặc một tệp mở (đối tượng giống như tệp) nơi dữ liệu sẽ được lưu. Nếu tệp là một chuỗi, tiện ích mở rộng Ma trận thưa thớt để lưu. Cho phép nén tệp. Mặc định: Đúng Ví dụ Lưu trữ ma trận thưa thớt vào đĩa và tải lại: >>> import scipy.sparse >>> sparse_matrix = scipy.sparse.csc_matrix(np.array([[0, 0, 3], [4, 0, 0]])) >>> sparse_matrix <2x3 sparse matrix of type ' >>> scipy.sparse.save_npz('/tmp/sparse_matrix.npz', sparse_matrix) >>> sparse_matrix = scipy.sparse.load_npz('/tmp/sparse_matrix.npz') >>> sparse_matrix <2x3 sparse matrix of type ' Dưới đây là so sánh hiệu suất của ba câu trả lời được nâng cấp nhiều nhất bằng cách sử dụng Notebook Jupyter. Đầu vào là ma trận thưa thớt ngẫu nhiên 1m x 100k với mật độ 0,001, chứa 100m giá trị khác không:
io.mmwrite / >>> scipy.sparse.save_npz('/tmp/sparse_matrix.npz', sparse_matrix) >>> sparse_matrix = scipy.sparse.load_npz('/tmp/sparse_matrix.npz') 0
(Lưu ý rằng định dạng đã được thay đổi từ CSR thành COO). >>> scipy.sparse.save_npz('/tmp/sparse_matrix.npz', sparse_matrix) >>> sparse_matrix = scipy.sparse.load_npz('/tmp/sparse_matrix.npz') 1 / >>> scipy.sparse.save_npz('/tmp/sparse_matrix.npz', sparse_matrix) >>> sparse_matrix = scipy.sparse.load_npz('/tmp/sparse_matrix.npz') 2
>>> scipy.sparse.save_npz('/tmp/sparse_matrix.npz', sparse_matrix) >>> sparse_matrix = scipy.sparse.load_npz('/tmp/sparse_matrix.npz') 3
Lưu ý: CPickle không hoạt động với các đối tượng rất lớn (xem câu trả lời này). Theo kinh nghiệm của tôi, nó không hoạt động cho một ma trận 2,7m x 50k với các giá trị khác không 270m. Giải pháp >>> scipy.sparse.save_npz('/tmp/sparse_matrix.npz', sparse_matrix) >>> sparse_matrix = scipy.sparse.load_npz('/tmp/sparse_matrix.npz')1 solution worked well. Sự kết luận. Vì vậy, >>> scipy.sparse.save_npz('/tmp/sparse_matrix.npz', sparse_matrix) >>> sparse_matrix = scipy.sparse.load_npz('/tmp/sparse_matrix.npz')1 là người chiến thắng ở đây. |