ValueError: не удалось передать входной массив из формы (65536) в форму (256,256,1) - PullRequest
0 голосов
/ 07 мая 2020

У меня есть изображение в градациях серого в виде массива с формой (256,256,1) , и я хочу сгладить его, чтобы получить форму (65536,) .

Я пробовал использовать reshape, flatten и ravel, но ничего не работает.

Я также смотрел на этот ответ

но я не совсем понимаю решение, поскольку я новичок в python.

Как мне go решить эту проблему?

Изменить:

Это строка кода, в которой возникает проблема

image_width = image_height = 256
X[0] = np.reshape(X[0],(image_width*image_height))

Где X имеет следующую форму: (64, 256, 256, 1)

dtype массива - float32

1 Ответ

1 голос
/ 07 мая 2020

Если это не работает:

In [80]: x = np.ones((256,256,1))                                                                      
In [81]: x.reshape(65536,).reshape((256,256,1)); 

должно быть что-то необычное в вашем массиве. Более полное описание массива (не только форма, но и dtype), а также код и полная трассировка могут помочь.

===

Вы редактируете, это показывает, что вы делаете больше, чем reshape. Вы пытаетесь вернуть преобразованный (под) массив обратно в исходный.

Добавить измерение в x:

In [86]: x = np.ones((1,256,256,1))                                                                                                                                               

изменение формы подмассива все еще работает:

In [88]: x[0].reshape(65536);                                                                          

, но попытка вернуть этот преобразованный массив обратно в x приводит к ошибке:

In [89]: x[0] = x[0].reshape(65536);                                                                   
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-89-c488a5e4f450> in <module>
----> 1 x[0] = x[0].reshape(65536);

ValueError: could not broadcast input array from shape (65536) into shape (256,256,1)

Как я уже писал, reshape не вызывает этой ошибки; выполняет задание

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...