Ошибка Numpy: «ValueError: невозможно скопировать последовательность с размером 2 на ось массива с размером 4» в python

avatar
Diyabya
9 августа 2021 в 06:24
533
1
-2

У меня ошибка в коде, и я написал код для проверки.
Небольшое описание моего тестового кода: я импортировал модуль numpy.
Я сделал переменную для начальной координаты, а затем сделал array 7×4.
После этого я пришел в цикл for и перебрал массив, где я сделал шаги x by 10 и y by 5 из переменной для начальной координаты. .
Printed array:3** Когда я начал писать код, он у меня был:

ValueError: cannot copy sequence with size 2 to array axis with dimension 4

Как исправить эту ошибку?
Вот КОД:

import numpy as np

#FOR TEST

pose = (640, 154)

all_poses = np.zeros((1, 7, 4))


for i in range(0, 6):
    for j in range(0, 4):
        y = pose[1] - i * 5
        x = pose[0] - j * 10
        cortege = (x, y)
        all_poses[i, j] = cortege

print(all_poses) 
Источник

Ответы (1)

avatar
Indrapari
9 августа 2021 в 07:08
1

Причина, по которой вы получаете сообщение об ошибке, заключается в том, что размеры cortege равны 1x2, тогда как размеры all_poses[i, j] равны 1x4. Итак, когда вы делаете all_poses[i, j] = cortege, вы делаете что-то вроде [0, 0, 0, 0] = [650, 154]. Здесь размеры не совпадают, и вы получаете сообщение об ошибке

.

Чтобы избежать ошибки, можно сделать размеры all_poses в начале 7x2 вместо 7x4 или выполнить all_poses[i, j] = cortege*2, что добавит [650, 154, 650, 154] к all_poses[i, j] , тем самым совпадая с размерами. Хотя то, что вы делаете, чтобы избежать ошибки, зависит от того, чего вы хотите достичь с помощью кода, что неясно в вашем вопросе. Не могли бы вы объяснить, что именно вы хотите, чтобы ваш код делал?