Vấn đề thực tế tôi có là tôi muốn lưu trữ một danh sách dài được sắp xếp của (float, str)
bộ dữ liệu trong RAM. Một danh sách đơn giản không phù hợp với RAM 4Gb của tôi, vì vậy tôi nghĩ tôi có thể sử dụng hai số numpy.ndarray
s.Làm cách nào để tôi điền hai (hoặc nhiều) mảng khối ô từ một bộ lặp có thể lặp lại?
Nguồn dữ liệu có thể lặp lại với 2 bộ dữ liệu. numpy
có chức năng fromiter
, nhưng làm cách nào tôi có thể sử dụng? Số lượng mục trong vòng lặp không xác định được. Tôi không thể tiêu thụ nó vào một danh sách đầu tiên do giới hạn bộ nhớ. Tôi nghĩ về itertools.tee
, nhưng có vẻ như thêm rất nhiều phí bộ nhớ ở đây.
Những gì tôi đoán tôi có thể làm là tiêu thụ trình lặp trong các khối và thêm chúng vào các mảng. Sau đó, câu hỏi của tôi là, làm thế nào để làm điều đó một cách hiệu quả? Tôi có nên tạo 2 mảng 2D và thêm hàng vào chúng không? (Sau đó, tôi cần phải chuyển đổi chúng thành 1D).
Hoặc có thể có cách tiếp cận tốt hơn? Mọi thứ tôi thực sự cần là tìm kiếm thông qua một chuỗi các chuỗi bằng giá trị của số tương ứng trong thời gian logarit (đó là lý do tại sao tôi muốn sắp xếp theo giá trị của phao) và giữ cho nó càng nhỏ càng tốt.
P.S. Các iterable không được sắp xếp.
Có sử dụng 'np.fromiter' để tạo một mảng đơn có hai cột đủ không? – unutbu
@unutbu ... Tôi không chắc tại sao tôi không cân nhắc điều đó :) Âm thanh như một ý tưởng tuyệt vời. Sau đó, tôi chỉ sắp xếp nó dọc theo trục dài hơn và giữ nó theo cách đó, phải không? Bạn có thể đăng nó như một câu trả lời, tôi cho là vậy. –