我有一个形状为(x,y)
的numpy矩阵。我想获得一个张量,它是y
向量的垂直堆栈,形状为(x,1)
。
假设我有以下矩阵:
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.]]])
答案 0 :(得分: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)
。