У меня есть список numpy массивов, форма которых является одной из следующих: (10,4,4,20), (10,4,6,20)
. Я хочу преобразовать список в массив numpy. Так как они имеют разные формы, я не могу просто сложить их. Итак, я подумал о создании массива numpy, рассматривая каждый массив как объект, как в здесь . Я попробовал следующее:
b = numpy.array(a)
b = numpy.array(a, dtype=object)
, где a - список numpy массивов. Оба выдают мне следующую ошибку:
ValueError: could not broadcast input array from shape (10,4,4,20) into shape (10,4)
Как мне преобразовать этот список в массив numpy?
Пример :
import numpy
a = [numpy.random.random((10,4,4,20)),
numpy.random.random((10,4,6,20)),
numpy.random.random((10,4,6,20)),
numpy.random.random((10,4,4,20)),
numpy.random.random((10,4,6,20)),
numpy.random.random((10,4,6,20)),
numpy.random.random((10,4,4,20)),
numpy.random.random((10,4,4,20)),
numpy.random.random((10,4,6,20))
]
b = numpy.array(a)
Вариант использования :
Я знаю, numpy массив объектов не эффективен, но я не выполняю над ними никаких операций. Обычно у меня есть список массивов одинаковой формы numpy, и я могу легко их сложить. Этот массив передается другой функции, которая выбирает только определенные элементы. Если мои данные массива numpy, я могу просто сделать b[[1,3,8]]
. Но я не могу сделать то же самое со списком. Я получаю следующую ошибку, если я пытаюсь сделать то же самое со списком
c = a[[1,3,8]]
TypeError: list indices must be integers or slices, not list