我有一个大矩阵,代表着...比如说魔方。
>>cube
>>[[-1, -1, -1, 1, 2, 3, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, 4, 5, 6, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, 7, 8, 9, -1, -1, -1, -1, -1, -1],
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 1, 8],
[ 4, 5, 6, 0, 7, 7, 6, 9, 6, 8, 1, 0],
[ 7, 8, 9, 6, 9, 7, 6, 6, 9, 0, 1, 7],
[-1, -1, -1, 1, 1, 0, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, 8, 8, 1, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, 8, 0, 1, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, 7, 1, 0, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, 0, 1, 8, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, 8, 1, 8, -1, -1, -1, -1, -1, -1]])
我已将它分成代表面部的部分。
top_f = cube[0:3,3:6]
botm_f = cube[6:9,3:6]
back_f = cube[3:6,9:12]
front_f = cube[3:6,3:6]
left_f = cube[3:6,0:3]
right_f = cube[3:6,6:9]
我想将一个修改后的矩阵分配给左侧面。
left_f = numpyp.rot90(left_f, k=3)
但这并不会改变父矩阵
cube
中的值。
我理解这是因为新生成的矩阵被分配给变量left_f
,所以对子切片cube[3:6,0:3]
的引用丢失了。
我可以直接替换它。cube[3:6,0:3] = numpyp.rot90(left_f, k=3)
但那并不容易理解。有没有一种巧妙的方式,在Python中将新矩阵赋给另一个矩阵的已命名分片?
left_f = numpyp.rot90(left_f, k=3)
之后,cube[3:6,0:3] = left_f
怎么样?我认为你的代码已经足够符合 Python 风格了。当处理矩阵时,你必须使用许多索引。 - Eric Duminilcube
太大了吧?最后三行没有被使用。 - Eric Duminilcube[3:6,1:4]
,那么我就必须在整个代码中寻找并替换那些部分。我希望将索引的显式使用降至最低。 - Harsh