用Python命名numpy数组的片段

2024-09-30 22:11:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很大的矩阵代表。。比如说魔方。你知道吗

>>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)

但这不太容易理解。 如何以pythonic方式将新矩阵分配给另一个矩阵的命名切片?你知道吗


Tags: righttop方式back代表矩阵pythonicleft
1条回答
网友
1楼 · 发布于 2024-09-30 22:11:03

可以将切片指定给变量:

left_face = slice(3, 6), slice(0, 3)
cube[left_face] = np.rot90(cube[left_face], k=3)

相关问题 更多 >