Ответ 1
По крайней мере, один элемент в вашем списке не является трехмерным; или это (второе или) третье измерение не соответствует другим элементам. Если только первое измерение не совпадает, массивы все еще сопоставляются, но как отдельные объекты: не предпринимается никаких попыток согласовать их в новый (четырехмерный) массив. Некоторые примеры ниже.
То есть оскорбительная shape != (?, 224, 3)
элемента shape != (?, 224, 3)
,
или ndim != 3
(с ?
будучи неотрицательным целым числом).
Это то, что дает вам ошибку.
Вам нужно будет это исправить, чтобы иметь возможность превратить ваш список в четырехмерный (или трехмерный) массив. Без контекста невозможно сказать, хотите ли вы потерять измерение из трехмерных элементов или добавить одно к двухмерным элементам (в первом случае), или изменить второе или третье измерение (во втором случае).
Вот пример ошибки:
>>> a = [np.zeros((224,224,3)), np.zeros((224,224,3)), np.zeros((224,224))]
>>> np.array(a)
ValueError: could not broadcast input array from shape (224,224,3) into shape (224,224)
или другой тип ввода, но та же ошибка:
>>> a = [np.zeros((224,224,3)), np.zeros((224,224,3)), np.zeros((224,224,13))]
>>> np.array(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not broadcast input array from shape (224,224,3) into shape (224,224)
Или аналогично, но с другим сообщением об ошибке:
>>> a = [np.zeros((224,224,3)), np.zeros((224,224,3)), np.zeros((224,100,3))]
>>> np.array(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not broadcast input array from shape (224,224,3) into shape (224)
Но следующее будет работать, хотя и с другими результатами, чем (предположительно) предполагалось:
>>> a = [np.zeros((224,224,3)), np.zeros((224,224,3)), np.zeros((10,224,3))]
>>> np.array(a)
# long output omitted
>>> newa = np.array(a)
>>> newa.shape
3 # oops
>>> newa.dtype
dtype('O')
>>> newa[0].shape
(224, 224, 3)
>>> newa[1].shape
(224, 224, 3)
>>> newa[2].shape
(10, 224, 3)
>>>