Если быть более точным, я приведу пример, в настоящее время у меня есть 3D-матрица размеров 375 x 1226 x 64. Что мне нужно сделать, это изменить последнее измерение так, чтобы вместо 375 x 1226 x 64 у меня было 375 x 1226 x 70 x 64, где эти значения 70 x 64 взяты из предыдущих 70 значений.
Я реализовал это, но, к сожалению, это занимает слишком много времени:
for i in range(0, old_mat.shape[0]):
for j in range(0, old_mat.shape[1]):
stop = j - 70 + 1
if stop < 0:
stop = 0
temp = old_mat[i:i + 1, stop: j + 1].squeeze(0)
new_mat[i][j][:temp.shape[0]] = temp
Править : скажем, 2d (3 x 4) массив:
[[1, 2, 5, 6], [2, 3, 3, 6], [3, 4, 5, 7]]
Теперь вместо 70, скажем, нам нужно около 3. В результате получается 3d (3 x 3 x 4):
[
[[1,2,5,6],[0,0,0,0],[0,0,0,0]],
[[2,3,3,6],[1,2,5,6],[0,0,0,0]],
[[3,4,5,7],[2,3,3,6],[1,2,5,6]]
]