많은 numpy 배열로 작업하고 있습니다. 최근에 너무 많은 메모리를 씹기 시작 했으므로 numpy.memmap
인스턴스로 바꾸고 싶습니다. 문제는, 지금은 배열의 크기를 조정해야한다는 것입니다. 이것은 보통의 배열에서 꽤 잘 작동하지만, memmaps에서이를 시도하면 데이터가 공유 될 수 있고, 심지어 refcheck를 비활성화하는 것이 도움이되지 않는다고 불평한다.numpy.memmap 배열의 크기 조정
a = np.arange(10)
a.resize(20)
a
>>> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
a = np.memmap('bla.bin', dtype=int)
a
>>> memmap([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
a.resize(20, refcheck=False)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-41-f1546111a7a1> in <module>()
----> 1 a.resize(20, refcheck=False)
ValueError: cannot resize this array: it does not own its data
기본 mmap 버퍼 크기를 조정하면 완벽하게 작동합니다. 문제는 이러한 변경을 배열 객체에 반영하는 방법입니다. 이 workaround을 본 적이 있지만 불행히도 배열의 크기를 조정하지는 않습니다. mmap 크기 조정에 대해서도 numpy documentation이 있지만 1.8.0 버전에서는 분명히 작동하지 않습니다. 다른 아이디어, inbuilt 크기 조정 수표를 무시하는 방법?
내가 모르는 뭔가가 있어야합니다 같은 ...이 코드는 나를 위해 잘 실행 느낀다. 그것은 당신을 위해 실행됩니까? 이게 니가하고 싶은게 아니야? http://codepad.org/eEWmYBHZ –
@three_pineapples 그는 배열의 전체 크기를 변경하려고합니다. 코드가 단지 모양을 바꿉니다. –
@ali_m 아, 알았습니다. 나는 질문에서 그것을 얻지 않았다. 그러나 내가 말했던 것처럼, 나는 내가 무엇인가 놓치고있다라고 생각했다! –