Вы создаете trainSet
, добавляя (в список);
temp = [x[0],img,x[1]]
trainSet.append(temp)
Похоже, x
- это некая строка или строки, используемые для создания имен файлов. img
- массив, созданный из загрузки изображения. Итак, temp
- это список, смесь строк и массива.
trainSet = np.asarray(trainSet)
Учитывая этот входной список, этот массив обязательно будет массивом типа dd объекта 1d. Он не может создать многомерный массив из этого списка.
testSet
- это другой список, но все же смесь строк и массивов:
temp = [x,img]
testSet.append(temp)
Давайте попробуем воссоздать этот
In [708]: alist = []
In [709]: alist.append(['x0', np.ones((2,3),int), 'x1'])
In [710]: alist.append(['x0', np.ones((2,3),int), 'x1'])
In [711]: alist
Out[711]:
[['x0', array([[1, 1, 1],
[1, 1, 1]]), 'x1'], ['x0', array([[1, 1, 1],
[1, 1, 1]]), 'x1']]
In [712]: np.array(alist)
Out[712]:
array([['x0', array([[1, 1, 1],
[1, 1, 1]]), 'x1'],
['x0', array([[1, 1, 1],
[1, 1, 1]]), 'x1']], dtype=object)
In [713]: _.shape
Out[713]: (2, 3)
ОК, я ожидал (2,) форму, вместо этого получил (2,3). Поэтому мое чтение вашего кода должно быть отключено.
Я мог бы извлечь часть массива с помощью индексации и stack
:
In [718]: np.stack(_712[:,1])
Out[718]:
array([[[1, 1, 1],
[1, 1, 1]],
[[1, 1, 1],
[1, 1, 1]]])
In [719]: _.shape
Out[719]: (2, 2, 3)
В любом случае, мы не можем помочь без дополнительной информации о списках, которые go в np.array(...)
звонки. Или хотя бы некоторую информацию о массиве, которую вы пытаетесь изменить.