将2D数组切片以匹配3D数组中的条目



我今天的任务是正确地切片一个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]

相关内容

  • 没有找到相关文章

最新更新