저는 int64s의 배열을 많이 사용하는 파이썬의 알고리즘을 연구하고 있습니다. 배열은 일반적으로 스파 스 (sparse)하고 지속적으로 읽고 쓰여집니다. 현재 상대적으로 큰 기본 배열을 사용하고 있으며 성능은 좋지만 메모리 사용량은 예상대로 높습니다.누구나 Python에서 훌륭한 스파 스 1 차원 배열 라이브러리를 아십니까?
배열 구현을 사용하고 싶지 않은 값을위한 공간을 낭비하지 않고 0 이외의 인덱스 오프셋을 허용하고 싶습니다. 예를 들어, 내 숫자가 1,000,000에서 시작하면 1,000,000부터 배열을 인덱싱 할 수 있기를 원하며 미사용 값이 백만 개가 아닌 메모리를 낭비하지 않아도됩니다.
어레이 읽기 및 쓰기가 빠를 필요가 있습니다. 새로운 영토로 확장하는 것은 약간 지연 될 수 있지만 가능하다면 읽기와 쓰기는 O (1)이어야합니다.
누구나 할 수있는 라이브러리에 대해 알고 있습니까?
감사합니다.
데이터 유형으로 언급 된 int64로 업데이트되었습니다.
:
는의는 2 레벨 페이지 테이블의 간단한 파이썬 구현을 보자. 멋진 제안에 감사드립니다. 나는 blist 제안을 대답으로 표시했다. 왜냐하면 그것은 blist 제안을 지금까지 가장 가까웠 기 때문이다. 모두에게 감사드립니다! – TheJacobTaylor많은 사람들이 사전을 제안했습니다. 파이썬을 모르는 사람은 파이썬 사전에 해당하는 것을 제안했습니다. 사전에는 O (1) 무작위 액세스 및 O (n) 메모리 사용이 있습니다. 여기서 n은 데이터 공간 크기가 아닌 실제 데이터 크기입니다. 이러한 특성은 당신이 요구 한 것과 정확히 같습니다. 당신은 그것을 시도했다고 말했지만 "CPU를 엄청나게"사용했습니다. 어레이보다 다른 속도로는 원하는 속도를 얻을 수 없으며 높은 메모리 사용량을 받아 들여야합니다. –