ndarray 的 numpy 堆栈行
numpy stack rows of ndarray
我有一个形状为 (u,v,w) 的 ndarray A,如下所示:
[[[ 1., 1., 0.],
[ 1., 3., 0.]],
[[ 0., 0., 0.],
[ 0., 0., 0.]]]
我需要像这样将行(沿着维度 0)堆叠在一起。
[[1., 1., 0., 0., 0., 0.],
[1., 3., 0., 0., 0., 0.]]
我该怎么做?
我知道如果只有两行我可以做 np.hstack((a[0], a[1])) 但是有没有办法在不将行转换为元组的情况下做到这一点?我想在theano中使用这段代码(因为numpy和theano的工作方式相似)
这应该可以正常工作:
np.hstack(a)
a[0], a[1], ...
是行而不是 a
的列。
所有 concatenate
函数族都遍历参数,无论它是列表、元组还是数组
In [318]: x=np.arange(12).reshape(2,2,3)
In [319]: x
Out[319]:
array([[[ 0, 1, 2],
[ 3, 4, 5]],
[[ 6, 7, 8],
[ 9, 10, 11]]])
这些都是等价的:
In [320]: np.hstack([x[0],x[1]])
Out[320]:
array([[ 0, 1, 2, 6, 7, 8],
[ 3, 4, 5, 9, 10, 11]])
In [321]: np.hstack(x)
Out[321]:
array([[ 0, 1, 2, 6, 7, 8],
[ 3, 4, 5, 9, 10, 11]])
In [322]: np.concatenate([x1 for x1 in x],axis=1)
Out[322]:
array([[ 0, 1, 2, 6, 7, 8],
[ 3, 4, 5, 9, 10, 11]])
In [323]: np.concatenate(x,axis=1)
Out[323]:
array([[ 0, 1, 2, 6, 7, 8],
[ 3, 4, 5, 9, 10, 11]])
Reshape 可以生成形状正确但顺序错误的数组:
In [332]: x.reshape(2,6)
Out[332]:
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11]])
但如果我们先交换第一个 2 轴,则重塑有效:
In [333]: x.transpose(1,0,2).reshape(2,6)
Out[333]:
array([[ 0, 1, 2, 6, 7, 8],
[ 3, 4, 5, 9, 10, 11]])
我有一个形状为 (u,v,w) 的 ndarray A,如下所示:
[[[ 1., 1., 0.],
[ 1., 3., 0.]],
[[ 0., 0., 0.],
[ 0., 0., 0.]]]
我需要像这样将行(沿着维度 0)堆叠在一起。
[[1., 1., 0., 0., 0., 0.],
[1., 3., 0., 0., 0., 0.]]
我该怎么做? 我知道如果只有两行我可以做 np.hstack((a[0], a[1])) 但是有没有办法在不将行转换为元组的情况下做到这一点?我想在theano中使用这段代码(因为numpy和theano的工作方式相似)
这应该可以正常工作:
np.hstack(a)
a[0], a[1], ...
是行而不是 a
的列。
所有 concatenate
函数族都遍历参数,无论它是列表、元组还是数组
In [318]: x=np.arange(12).reshape(2,2,3)
In [319]: x
Out[319]:
array([[[ 0, 1, 2],
[ 3, 4, 5]],
[[ 6, 7, 8],
[ 9, 10, 11]]])
这些都是等价的:
In [320]: np.hstack([x[0],x[1]])
Out[320]:
array([[ 0, 1, 2, 6, 7, 8],
[ 3, 4, 5, 9, 10, 11]])
In [321]: np.hstack(x)
Out[321]:
array([[ 0, 1, 2, 6, 7, 8],
[ 3, 4, 5, 9, 10, 11]])
In [322]: np.concatenate([x1 for x1 in x],axis=1)
Out[322]:
array([[ 0, 1, 2, 6, 7, 8],
[ 3, 4, 5, 9, 10, 11]])
In [323]: np.concatenate(x,axis=1)
Out[323]:
array([[ 0, 1, 2, 6, 7, 8],
[ 3, 4, 5, 9, 10, 11]])
Reshape 可以生成形状正确但顺序错误的数组:
In [332]: x.reshape(2,6)
Out[332]:
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11]])
但如果我们先交换第一个 2 轴,则重塑有效:
In [333]: x.transpose(1,0,2).reshape(2,6)
Out[333]:
array([[ 0, 1, 2, 6, 7, 8],
[ 3, 4, 5, 9, 10, 11]])