тут написано
Datasets can be resized, up to a maximum value provided at creation time. You can specify this maximum size via the maxshape argument to create_dataset or require_dataset. Shape elements with the value None indicate unlimited dimensions.
так и не понятно, что конкретно происходит при ресайзе, т.е. какие накладные расходы, и почему бы не поставить unlimited dimensions сразу?
в идеале хотелось бы чтобы большая матрица хранилась на диске и к ней был “прозрачный” доступ как numpy.array, вроде как numpy.memmap как раз это и позволяет, т.е. возможно например посчитать среднее значение просто передав
, а не читая по кускам и не модифицирую функцию подсчёта или например sklearn тоже принимает numpy.memmap как данные на вход.
еще по поводу x32 и x64, для больших файлов обязательно должна быть система x64 (+ и сам питон)?
на х32 не получилось создать массив 1кк х 1к float32
fp = np.memmap('C:/data_1000000x1000', dtype='float32', mode='w+', shape=(1000000,1000))
т.е. понятно что мы имеем ограничение на адресное пространство, но мы же читаем не все сразу, а по идее имеем только ограничение на размер slice/view.
позволяет ли hdf5 работать с большими данными на x32?
про PyTables пишут (хотя это не тот объем)
PyTables program can deal with a table with around 30 columns and 1 million entries using as low as 13 MB of memory (on a 32-bit platform).