Tôi đang cố gắng tạo một ma trận thưa thớt rất lớn có hình dạng (447957347, 5027974)
. Và nó chứa 3,289,288,566 yếu tố.Cách tạo ma trận thưa thớt lớn trong scipy
Nhưng, khi tôi tạo ra một csr_matrix
sử dụng scipy.sparse
, nó quay trở lại một cái gì đó như thế này:
<447957346x5027974 sparse matrix of type '<type 'numpy.uint32'>'
with -1005678730 stored elements in Compressed Sparse Row format>
Các mã nguồn để tạo ma trận là:
indptr = np.array(a, dtype=np.uint32) # a is a python array('L') contain row index information
indices = np.array(b, dtype=np.uint32) # b is a python array('L') contain column index information
data = np.ones((len(indices),), dtype=np.uint32)
test = csr_matrix((data,indices,indptr), shape=(len(indptr)-1, 5027974), dtype=np.uint32)
Và, tôi cũng tìm thấy khi tôi chuyển đổi mảng python dài 3 tỷ đến mảng có nhiều mảng, nó sẽ gây ra lỗi:
ValueError:setting an array element with a sequence
Nhưng, khi tôi tạo ba mảng python dài 1 tỷ, và chuyển đổi chúng thành mảng numpy, sau đó thêm chúng vào. Nó hoạt động tốt.
Tôi đang bối rối.
Thay vì mô tả 'a' và' b', bạn có thể thêm một số mã tạo dữ liệu ví dụ không? – YXD
@Ofey Có lẽ bạn có thể sử dụng coo_matrix để tạo ma trận thưa thớt, có vẻ dễ hơn phương pháp hiện tại của bạn: 'test = coo_matrix ((dữ liệu, (hàng, cols)), shape = (m, n))' –
sử dụng python 32 bit hoặc hệ thống 32 bit? Có vẻ như bạn đang nhấn giới hạn số nguyên có ký 32 bit. – jrennie