簡體   English   中英

切片 2D 數組以匹配 3D 數組中的條目?

[英]Slicing a 2D array to match entries from a 3D array?

我今天的任務是正確切片 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] 時,

我只是得到了一個空數組。

您可以再次使用 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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM