Я пытаюсь перенести некоторый код из сценария matlab в python, и я работаю на 3D-матрице.Я пытаюсь реализовать это на Python, но я столкнулся со странным поведением в моем коде Python.Я представляю здесь упрощенную версию моей проблемы:
(это должна быть матрица, а не массив, поскольку в исходной задаче она должна хранить символические выражения)
код Matlab,он создает серию треугольных массивов размером i x i , где i = 1: n:
n = 3;
f = zeros(n+1,n+1,n+1);
for m = 1:n
for i = 1:m+1
for j = 1:m+1 -i +1
f(i,j,m+1) = i*j*m;
end
end
end
Мой код Python:
n = 3;
f = [[[0 for k in range(n+1)] for j in range(n+1)] for i in range(n+1)]
for m in range(n):
for i in range(m+2):
for j in range(m+2-i):
f[i][j][m+1] = (i+1)*(j+1)*(m+1);
Выход Matlab для последних 2 матриц:
f(:,:,3) = f(:,:,4) =
2 4 6 0 3 6 9 12
4 8 0 0 6 12 18 0
6 0 0 0 9 18 0 0
0 0 0 0 12 0 0 0
Выход Python для последних 2 матриц:
[[0, 0, 6, 9], [0, 0, 0, 18], [0, 0, 0, 0], [0, 0, 0, 0]],
[[0, 0, 0, 12], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]]
Я проверил, что числоитераций одинаковы в обоих кодах.я также проверил, что индексы имеют правильные значения в каждой итерации.Например: Matlab m, i, j = (1,1,1) равно Python m, i, j = (0,0,0)