У меня есть трехмерный массив размером 9x9x9, который рассматривается как 27 кубов размером 3x3x3. После идентификации двух «кубиков» 3x3x3 с «id» от 0 до 26 я хочу изменить значения двух «кубов». Когда я это делаю, я изменяю только значения первого куба (только первая строка)
Почему Python не делает второе изменение?
mat = np.arange(729).reshape(9,9,9)
idO = int(input('Enter first id \n'))
idD = int(input('Enter second id \n'))
def limites(id):
x=id%3
y=(id%9)//3
z=id//9
limites = np.array([z,y,x])
return limites
def mover(limitesA, limitesB):
tempA = mat[limitesA[0]*3:(limitesA[0]*3)+3, limitesA[1]*3:(limitesA[1]*3)+3, limitesA[2]*3:(limitesA[2]*3)+3]
print(tempA)
tempB = mat[limitesB[0]*3:(limitesB[0]*3)+3, limitesB[1]*3:(limitesB[1]*3)+3, limitesB[2]*3:(limitesB[2]*3)+3]
print(tempB)
# only the first line does
mat[limitesB[0]*3:(limitesB[0]*3)+3, limitesB[1]*3:(limitesB[1]*3)+3, limitesB[2]*3:(limitesB[2]*3)+3] = tempA
mat[limitesA[0]*3:(limitesA[0]*3)+3, limitesA[1]*3:(limitesA[1]*3)+3, limitesA[2]*3:(limitesA[2]*3)+3] = tempB
limA=limites(idO)
limB=limites(idD)
mover(limA, limB)
Я ожидаю, что на выходе изменится два куба
mat[limitesB[0]*3:(limitesB[0]*3)+3, limitesB[1]*3:(limitesB[1]*3)+3, limitesB[2]*3:(limitesB[2]*3)+3] = tempA
mat[limitesA[0]*3:(limitesA[0]*3)+3, limitesA[1]*3:(limitesA[1]*3)+3, limitesA[2]*3:(limitesA[2]*3)+3] = tempB
но фактический выходной сигнал меняется только на первый куб
mat[limitesB[0]*3:(limitesB[0]*3)+3, limitesB[1]*3:(limitesB[1]*3)+3, limitesB[2]*3:(limitesB[2]*3)+3] = tempA