Изменение размера массивов numpy.memmap
я работаю с кучей больших массивов, и в последнее время они начали перегружать память, я хотел заменить их наnumpy.memmap
экземпляров. Проблема в том, что время от времени мне приходится изменять размеры массивов, и яЯ бы предпочел сделать это на месте. Это работало довольно хорошо с обычными массивами, но попытка этого на memmaps жалуется, что данные могут быть общими, и даже отключение повторной проверки не помогает.
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)
in ()
----> 1 a.resize(20, refcheck=False)
ValueError: cannot resize this array: it does not own its data
Изменение размера базового буфера mmap работает отлично. Проблема в том, как отразить эти изменения в объекте массива. Я'видел этообходной путьно, к сожалению, это не такизменить размер массива на месте. Есть также некоторыепустая документация о изменении размера карт, но этоs явно не работает, по крайней мере, с версией 1.8.0. Любые другие идеи, как переопределить встроенные проверки изменения размера?