Tôi muốn tạo một mảng nhị phân 2D (bit) trong Python theo cách không gian và thời gian hiệu quả như bitmap 2D của tôi sẽ là khoảng 1 triệu (hàng) * 50000 (các cột 0 hoặc 1) và tôi cũng sẽ thực hiện các hoạt động bitwise trên các phần tử khổng lồ này. mảng của tôi sẽ giống như thế:Không gian Python + thời gian hiệu quả Cấu trúc dữ liệu để lưu trữ mảng bit 2D
0 1 0 1
1 1 1 0
1 0 0 0
...
Trong C++ cách hiệu quả nhất (không gian) đối với tôi sẽ là để tạo ra một loại mảng các số nguyên trong đó mỗi yếu tố đại diện cho 32 bit và sau đó tôi có thể sử dụng các toán tử chuyển đổi kết hợp với các nhà khai thác bit-khôn ngoan để thực hiện các hoạt động.
Bây giờ tôi biết rằng có một mô-đun bitarray trong python. Nhưng tôi không thể tạo ra một cấu trúc 2D bằng cách sử dụng danh sách các mảng bit. Tôi có thể làm cái này như thế nào?
Một cách khác tôi biết trong C++ là tạo bản đồ giống như map<id, vector<int> >
nơi tôi có thể thao tác vectơ như tôi đã đề cập ở trên. Tôi có nên sử dụng từ điển tương đương trong python? Thậm chí nếu bạn đề xuất cho tôi một số cách để sử dụng mảng bit cho nhiệm vụ này nó sẽ là tuyệt vời Nếu tôi có thể biết liệu tôi có thể có nhiều chủ đề hoạt động trên một mối nối của bitarray để tôi có thể làm cho nó đa luồng. Cảm ơn đã giúp đỡ!!
CHỈNH SỬA:
Tôi thậm chí có thể tạo cấu trúc dữ liệu riêng cho điều này nếu cần thiết. Tuy nhiên chỉ muốn kiểm tra trước khi phát minh lại bánh xe.
Đây có phải là mảng thưa thớt không? Nếu không, bạn sẽ cần ~ 6GB để lưu trữ tất cả các bit đó –
bitwise là thừa khi datatype là bit :). Có lẽ bạn chỉ có thể sử dụng một 'bộ' và các hoạt động thiết lập bình thường. Thành viên của tập hợp có thể đại diện cho 'True' –
Các hoạt động bitwise chỉ áp dụng khi bạn bị kẹt trên ý tưởng rằng bạn cần phải sử dụng 32 bit ints (hoặc tương tự) để quay lại các bit vào. –