我有一个大矩阵,代表......比如说魔方。
>>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]])
Run Code Online (Sandbox Code Playgroud)
我把它切成代表面孔的部分。
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]
Run Code Online (Sandbox Code Playgroud)
我现在想将修改后的矩阵分配给左面。
left_f = numpyp.rot90(left_f, k=3)
Run Code Online (Sandbox Code Playgroud)
但这不会改变父矩阵中的值cube。我理解这是因为新生成的矩阵被分配给变量left_f,因此对子切片的引用cube[3:6,0:3]丢失了。
我只能直接更换它。
cube[3:6,0:3] = numpyp.rot90(left_f, k=3)
Run Code Online (Sandbox Code Playgroud)
但这不太可读。如何以Python方式将新矩阵分配给另一个矩阵的命名切片?
您可以将切片分配给变量:
left_face = slice(3, 6), slice(0, 3)
cube[left_face] = np.rot90(cube[left_face], k=3)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
233 次 |
| 最近记录: |