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