Вы можете попробовать использовать таблицы tables.CArray, так как он поддерживает сжатие, но ...
Я думаю, что вопросы больше касаются numpy, чем pytables, потому что вы создаете массив, используя numpy, перед тем, как хранить его в pytables.
Таким образом, вам нужно много оперативной памяти для выполнения np.zeros ((ndim, ndim) - и это, вероятно, место, где возникает исключение: «ValueError: массив слишком большой.» .
Если матрица / массив не плотные, вы можете использовать разреженное представление матрицы, доступное в scipy: http://docs.scipy.org/doc/scipy/reference/sparse.html
Другое решение состоит в том, чтобы попытаться получить доступ к вашему массиву через чанки, если вам не нужен весь массив сразу - проверьте этот поток: Очень большие матрицы с использованием Python и NumPy