[英]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.