Чтобы сделать это, вам нужно либо использовать тип данных, размер которого можно изменить, как я сделал в своем другом ответе , либо вы также можете выяснить, сколько изображений у вас до определение массива. (По предложению @ P.Camilleri)
Вот пример этого:
# Count nuber of images
idx_count = 0
for item in dataset:
idx_count += len(item['data'])
# Create an empty numpy array that's Nx3x3
images = np.empty((count, 3, 3))
# Populate numpy array with images
idx = 0
for item in dataset:
for row in item["data"]:
images[idx] = row["sub_data"]
idx += 1
print(images)
Преимущество этого заключается в том, что вы выделяете пространство только один раз, в отличие от использования списка Python, где он сначала добавляется в список , а затем , копируемый в пустой массив.
Однако это за счет необходимости повторять данные дважды.
(Примечание: два отдельных ответа, поэтому их можно оценивать отдельно, так как я не уверен, какое решение лучше.)