Python 从二维矩阵表示三维矩阵
我有一个要求,假设您有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表示索引,就像最后我需要一个带有形状(5,25,25)的3D数组一样 最后,所有组合的最终形状应为(5,25,25) 简单例子Python 从二维矩阵表示三维矩阵,python,python-2.7,Python,Python 2.7,我有一个要求,假设您有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表示索引,就像最后我需要一个带有形状(5,25,25)的3D数组一样 最后,所有组合的最终形状应为(5,25,25) 简单例子 a = [[1,2],[3,4]] b = [[5,6],[7,8]] make a and b i
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)
对不起,我不明白您想做什么。你能显示你期望从输入中得到的确切的实际输出吗?只是画点不是很清楚。好的,我会一个接一个的。。。。假设我有一个数组a=[[1,2],[3,4]]b=[[5,6],[7,8],[9,10]]你将如何填充零,使a和b具有形状(5,5)?你能提供一个文件格式(如4x4)的示例吗?简单的示例a=[[1,2],[3,4]]b=[5,6],[7,8]]在一个列表中创建a和b,并像这样返回c=[[1,2],[3,4],[5,6],[7,8]]现在c的形状应该是(2,2,2)@VinodPrime编辑问题,不要在评论中不格式化。
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)