Tôi có một tệp npz 3.374Gb, myfile.npz
.Tại sao mảng numpy này quá lớn để tải?
tôi có thể đọc nó và xem các tên tập tin:
a = np.load('myfile.npz')
a.files
cho
['arr_1','arr_0']
tôi có thể đọc trong 'arr_1' ok
a1=a['arr_1']
Tuy nhiên, tôi không thể tải trong arr_0
hoặc đọc hình dạng của nó:
a1=a['arr_0']
a['arr_0'].shape
cả các hoạt động trên cung cấp cho các lỗi sau:
ValueError: array is too big
Tôi có 16Gb RAM trong đó 8.370Gb có sẵn. Vì vậy, vấn đề dường như không liên quan đến bộ nhớ. Câu hỏi của tôi là:
Tôi có thể đọc tệp này không?
Có ai có thể giải thích lỗi này không?
Tôi đã xem xét sử dụng
np.memmap
để giải quyết vấn đề này - đây có phải là phương pháp hợp lý không?Tôi nên sử dụng phương pháp gỡ lỗi nào?
EDIT:
tôi có quyền truy cập vào một máy tính với RAM hơn (48GB) và nó được nạp. dtype
thực tế là complex128
và bộ nhớ không nén của a['arr_0']
là 5750784000 byte. Có vẻ như một chi phí RAM có thể được yêu cầu. Hoặc là số lượng dự đoán của tôi về RAM có sẵn là sai (tôi đã sử dụng Windows sysinternals RAMmap).
tôi nghi ngờ lý do bạn có thể 't tải nó là bởi vì đại diện, ví dụ, 3.4 như một phao trong bộ nhớ máy tính đòi hỏi nhiều bộ nhớ hơn tiết kiệm 3,4 trên đĩa. Nhưng tôi ít chắc chắn về điều đó hơn trước khi tôi bắt đầu đọc nó. – Joel
Bạn có biết tệp đó đã được nén hay không (được tạo bằng cách sử dụng ['np.savez_compressed()'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.savez_compressed.html#numpy. savez_compressed))? Bạn đã tạo nó trên cùng một máy mà bạn đang cố tải nó lên chưa? Bạn có biết loại mảng nào chứa (kích thước và kiểu chữ) không? –
@ali_m, có được lưu với 'np.savez_compressed' nhưng trên một máy khác. Các 'arr_0' là nổi (tôi nghĩ 8 byte) của hình dạng' (200,1440,3,12,32) ',' arr_1' là (200,3,32) một lần nữa nổi. – atomh33ls