Не могу сказать, что это ответ, но, возможно, это так.
Когда я работал над приложением, которое требовало быстрых циклов, я обнаружил, что что-то в коде очень медленно. Это было открытие / закрытие файлов yaml.
Это было решено с помощью JSON.
Не используйте YAML для чего-либо другого, кроме как в качестве конфигурации, которую вы не часто открываете.
Решение для сохранения вашего массива:
np.save(path,array) # path = path+name+'.npy'
Если вам действительно нужно сохранить список массивов, я рекомендую вам сохранить список с путями к массивам (сами массивы вы сохраните на диске с помощью np.save). Сохранение объектов Python на диске не совсем то, что вам нужно. То, что вы хотите - это сохранить массивы с помощью np.save
Полное решение (пример сохранения):
for array_index in range(len(list_of_arrays)):
np.save(array_index+'.npy',list_of_arrays[array_index])
# path = array_index+'.npy'
Полное решение (пример загрузки):
list_of_array_paths = ['1.npy','2.npy']
list_of_arrays = []
for array_path in list_of_array_paths:
list_of_arrays.append(np.load(array_path))
Дополнительные советы:
Python не может работать с большими массивами. Более того, если вы загрузили несколько из них в списке. С точки зрения скорости и памяти всегда работайте с одним, двумя массивами одновременно. Остальные должны ждать на диске. Поэтому вместо ссылки на объект укажите ссылку в виде пути и при необходимости загрузите его с диска.
Кроме того, вы сказали, что не хотите собирать список вручную.
Возможное решение, которое я не советую, но возможно именно то, что вы ищете
>>> a = np.zeros(shape = [10,5,3])
>>> b = np.zeros(shape = [7,7,9])
>>> c = [a,b]
>>> np.save('data.npy',c)
>>> d = np.load('data.npy')
>>> d.shape
(2,)
>>> type(d)
<type 'numpy.ndarray'>
>>> d.shape
(2,)
>>> d[0].shape
(10, 5, 3)
>>>
Мне кажется, мне не нужно комментировать вышеупомянутый код. Однако после загрузки вы потеряете список, поскольку список будет преобразован в массив numpy.