我今天的任务是正确地切片一个2D数组,以便它与3D数组中的某些条目正确匹配。例如,我有一个3D数组如下:
[[[ 1.06103295e+02 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 1.06103295e+02 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 1.06103295e+02]]
[[ 5.09297818e+05 5.09296818e+05 5.09296818e+05]
[ 5.09296818e+05 5.09297818e+05 5.09296818e+05]
[ 5.09296818e+05 5.09296818e+05 5.09297818e+05]]
[[ 5.09297818e+05 5.09296818e+05 5.09296818e+05]
[ 5.09296818e+05 5.09297818e+05 5.09296818e+05]
[ 5.09296818e+05 5.09296818e+05 5.09297818e+05]]
[[ 1.06103295e+02 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 1.06103295e+02 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 1.06103295e+02]]]
使用"numpy."命令,我将其更改为2D数组,尺寸为(12,3)。
[[ 1.06103295e+02 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 1.06103295e+02 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 1.06103295e+02]
[ 5.09297818e+05 5.09296818e+05 5.09296818e+05]
[ 5.09296818e+05 5.09297818e+05 5.09296818e+05]
[ 5.09296818e+05 5.09296818e+05 5.09297818e+05]
[ 5.09297818e+05 5.09296818e+05 5.09296818e+05]
[ 5.09296818e+05 5.09297818e+05 5.09296818e+05]
[ 5.09296818e+05 5.09296818e+05 5.09297818e+05]
[ 1.06103295e+02 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 1.06103295e+02 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 1.06103295e+02]]
现在,我如何对其进行切片,以获得与上面相同形式的条目?
例如,我已经像这样分割了其中一个条目:
M11 = myarrayname[0:3, 0:3]
和我得到的结果:
[[ 106.10329539 0. 0. ]
[ 0. 106.10329539 0. ]
[ 0. 0. 106.10329539]]
请注意,这与上面3D数组中的一个块相同(减去科学符号)。我如何保持切片条目,以获得其他3块从上面的3D数组?
当我尝试M12 = myarrayname[4:6, 4:6]时,
我只是得到一个空数组
您可以使用np。再次重塑(如果A
是您的数组):
B = np.reshape(A, (12, 3))
C = np.reshape(B, (4, 3, 3))
但是如果你想自己选择数组,那么:
M11 = B[0:3, 0:3]
M12 = B[3:6, 0:3]
M13 = B[6:9, 0:3]
M14 = B[9:12, 0:3]