[英]Representing 3D Matrix from 2D
我有一個要求,假設您有 5 個文本文件,例如 a、b、c、d、e,其中值以矩陣形式表示,即 a、b、c、d、e 的形狀為 (5,5)、(4 ,4)、(7,7)、(6,6)、(8,8)
所以我想要的是在從每個文件中獲取矩陣之后,我必須通過在此處填充零將形狀轉換為 (1,25,25) 1 指的是 index ,就像最后我需要一個形狀為 (5, 25,25)
shapes conversion:
(5, 5) -> (1,25,25)
(4, 4) -> (2,25,25)
(7, 7) -> (3,25,25)
(6, 6) -> (4,25,25)
(8, 8) -> (5,25,25)
最后全部放在一起最終形狀應該是(5,25,25)
簡單示例
a = [[1,2],[3,4]]
b = [[5,6],[7,8]]
make a and b in a single list and return like this
c = [[[1,2],[3,4]],[[5,6],[7,8]]]
now the shape of c should be (2,2,2)
這是我期望的實際輸出
array([[[ 36.85810471, 2.90763259, 2.90761209, ..., 0. ,
0. , 0. ],
[ 2.90763259, 0.5 , 0.29672 , ..., 0. ,
0. , 0. ],
[ 2.90761209, 0.29672 , 0.5 , ..., 0. ,
0. , 0. ],
...,
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ]],
[[ 36.85810471, 12.59994411, 2.90199971, ..., 0. ,
0. , 0. ],
[ 12.59994411, 36.85810471, 1.47311664, ..., 0. ,
0. , 0. ],
[ 2.90199971, 1.47311664, 0.5 , ..., 0. ,
0. , 0. ],
...,
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ]],
[[ 36.85810471, 14.26182747, 1.503703 , ..., 0. ,
0. , 0. ],
[ 14.26182747, 36.85810471, 2.92502046, ..., 0. ,
0. , 0. ],
[ 1.503703 , 2.92502046, 0.5 , ..., 0. ,
0. , 0. ],
...,
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ]],
...,
[[ 36.85810471, 8.56999111, 13.29380131, ..., 0. ,
0. , 0. ],
[ 8.56999111, 53.35870743, 19.15359688, ..., 0. ,
0. , 0. ],
[ 13.29380131, 19.15359688, 36.85810471, ..., 0. ,
0. , 0. ],
...,
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ]],
[[ 36.85810471, 12.54030132, 8.02613068, ..., 0. ,
0. , 0. ],
[ 12.54030132, 36.85810471, 12.64339542, ..., 0. ,
0. , 0. ],
[ 8.02613068, 12.64339542, 36.85810471, ..., 0. ,
0. , 0. ],
...,
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ]],
[[ 36.85810471, 12.62930584, 12.60999584, ..., 0. ,
0. , 0. ],
[ 12.62930584, 36.85810471, 7.73449707, ..., 0. ,
0. , 0. ],
[ 12.60999584, 7.73449707, 36.85810471, ..., 0. ,
0. , 0. ],
...,
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ]]], dtype=float32)
形狀是 (7165,23,23)
誰能告訴我如何做到這一點?
這是您可以做我認為您想做的一種方法。 假設您的初始數組是a
、 b
等,例如:
a = np.arange(25).reshape((5,5))
b = np.arange(36).reshape((6,6))
c = np.arange(16).reshape((4,4))
...
然后填充它們並堆疊它們:
W = np.dstack([np.pad(m,((0,25-m.shape[0]),(0,25-m.shape[0])),
mode='constant') for m in (a,b,c)])
X = np.rollaxis(W, 2)
X.shape
然后是(3, 25, 25)
原始矩陣條目在每個“層”的左上角。 您需要滾動軸,因為深度堆疊它們會得到一個形狀為(25, 25, 3)
的數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.