Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在numpy数组中重塑和连接_Python_Arrays_Numpy - Fatal编程技术网

Python 在numpy数组中重塑和连接

Python 在numpy数组中重塑和连接,python,arrays,numpy,Python,Arrays,Numpy,我想知道是否存在一种简单的方法来转换这样一个矩阵: [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]] 进入 这相当于将每个初始列表重塑为2x2矩阵,然后将它们连接起来; 例如 np.数组([1,2,3,4])。重塑((2,2))给出[[1,2],[3,4]] np.数组([5,6,7,8])。重塑((2,2))给出[5,6],[7,8]] 所以 将给予 array([[1 ,2 ,5 ,6 ], [3 ,4 ,7 ,8 ]]) 等等

我想知道是否存在一种简单的方法来转换这样一个矩阵:

[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]

进入

这相当于将每个初始列表重塑为2x2矩阵,然后将它们连接起来; 例如
np.数组([1,2,3,4])。重塑((2,2))
给出[[1,2],[3,4]]

np.数组([5,6,7,8])。重塑((2,2))
给出[5,6],[7,8]]

所以

将给予

array([[1 ,2 ,5 ,6 ],
       [3 ,4 ,7 ,8 ]])
等等

这确实是一个虚构的例子,因为我需要处理更多(和更大)的矩阵,我必须找到一个更简单的方法。

我们可以使用和沿第一轴:

np.concatenate(a.reshape(a.shape[0], a.shape[1], 2, -1)
                 .swapaxes(1,2)
                 .reshape(a.shape))

array([[ 1,  2,  5,  6],
       [ 3,  4,  7,  8],
       [ 9, 10, 13, 14],
       [11, 12, 15, 16]])

如果我理解正确,你想“放弃”第二维度?哇!真令人印象深刻!非常感谢你!现在我只需要学习和理解这个我不知道的swapaxes方法:)最后我不能把它应用到我的问题上。。。我有Q.shape=(10,10784),我想,以与我的例子相同的方式,找到一个(280280)形状的矩阵;最后我用
data=np.array([])表示Q中的l:ligne=np.array([])表示l中的s:if ligne.shape==(0,):ligne=s.reforme((28,28))else:ligne=np.concatenate((ligne,s.reforme((28,28))),axis=1)if data.shape==(0,):data=ligne-else:data=data=np.concatenate((数据,对齐,轴=0)
在这种情况下,a,b,c,d,e是什么,用于
np.连接(Q.reforme(a,b,c,-1).交换(d,e).reforme(Q.shape))
?我的错我硬编码了前两个轴,现在尝试@NetchaievStill不工作(我在末尾得到了一个100x784矩阵…),因为在我感兴趣的矩阵Q,Q.shape[0]和Q.shape[1]将是10,在某个时刻,我想必须将784个长列表转换为28x28个矩阵。。。
array([[1 ,2 ,5 ,6 ],
       [3 ,4 ,7 ,8 ]])
np.concatenate(a.reshape(a.shape[0], a.shape[1], 2, -1)
                 .swapaxes(1,2)
                 .reshape(a.shape))

array([[ 1,  2,  5,  6],
       [ 3,  4,  7,  8],
       [ 9, 10, 13, 14],
       [11, 12, 15, 16]])