Чтобы просто сказать это, у меня есть список измерения [32, 31, 4], который я хотел бы уменьшить до формы [32, 31, 3], чтобы заменить каждый массив в последнем измерении на массив размера (3).
for a in range(len(liste)): #len(list) = 95
for b in range(len(liste[a])): #shape = [32, 31, 3], b travels in the 1st dim.
#print('frame : ', liste[a][b].shape) #[31, 4]
#print('b', b) #32 frames each time ok
for c in range(len(liste[a][b])):
#print('c', c) #31 each time ok
#print('norme du quaternion', np.abs(np.linalg.norm(liste[a][b][c]))) #norm = 1
r = quat2expmap(liste[a][b][c]) #convertion to expmap successful
#print('ExpMap : ', r)
quat = liste[a][b][c]
quat = r #this works
#print('quat', quat)
liste[a][b][c] = r #this doesn't work
Если быть более точным, у меня есть набор данных из 95 различных жестов, каждый из которых представлен 32 кадрами и кватернионами. Я преобразовал кватернионы в ExpMap, но из-за разницы форм я не могу заменить кватернионы на соответствующие им ExpMap. Код ошибки, который я получаю больше всего, следующий:
ValueError: could not broadcast input array from shape (3) into shape (4)
Это происходит из последней строки кода. Самое странное, что, когда я разбираю кватернион и заменяю его, он работает слаженно, но python откажется от того, что я сделаю это в своем списке. Я не совсем понимаю, почему.
Не могли бы вы рассказать мне об этом? Как я могу получить правильное измерение в моем списке? Я перепробовал все трюки, такие как del , remove () , но не получил результата ...