我今天的任务是正确切片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.reshape"命令,我把它改成了一个尺寸为(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数组中的一个块相同(减去科学记数法)。如何保持切片条目以从上面的3D数组中获取其他3个块?
当我试图做M12 = myarrayname [4:6,4:6]时,
我只是得到一个空数组。
答案 0 :(得分:0)
您可以再次使用np.reshape(如果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]