簡體   English   中英

numpy通過堆疊列將2d矩陣重塑為3d矩陣

[英]numpy reshape 2d matrix to 3d matrix by stacking columns

我有一個形狀為(x,y)的numpy矩陣。 我想得到一個張量,它是形狀為(x,1)y向量的垂直堆棧。 可以說我有以下矩陣:

array([[ 1.,  2.],
       [ 1.,  2.],
       [ 1.,  2.]])

當我做np.reshape(2,3,1) 我會得到:

array([[[ 1.],
        [ 2.],
        [ 1.]],
       [[ 2.],
        [ 1.],
        [ 2.]]])

但我想要這個:

array([[[ 1.],
        [ 1.],
        [ 1.]],
       [[ 2.],
        [ 2.],
        [ 2.]]])
In [135]: arr=np.array([[1,2],[1,2],[1,2]])
In [136]: arr.shape
Out[136]: (3, 2)
In [137]: arr.transpose()
Out[137]: 
array([[1, 1, 1],
       [2, 2, 2]])
In [138]: arr.transpose()[:,:,None]
Out[138]: 
array([[[1],
        [1],
        [1]],

       [[2],
        [2],
        [2]]])

您想要一個形狀(2,3,1)。 從(3,2)開始,這意味着您必須切換2個軸,並添加一個。 可以按任何順序完成。 在這里,我選擇轉置進行切換,並選擇[:,:,None]添加尺寸。

arr.reshape(3,2,1).swapaxes(0,1)也可以使用。 更晦澀的是np.stack(arr[:,:,None],1)

暫無
暫無

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

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