Python 以numpy为单位在维度上串联
我为Python 以numpy为单位在维度上串联,python,numpy,Python,Numpy,我为x [[[ 1 2 3] [ 4 5 6]] [[ 7 8 9] [10 11 12]]] # shape (2,2,3) 我想要 [[ 1 2 3 4 5 6] [ 7 8 9 10 11 12]] # shape (2,6) 也就是说,我想把中间维度的所有项目串联起来。 在这种特殊情况下,我可以用 x.reshape(2, 2*3) 或者更抽象地说 x.reshape(x.shape[0], x.shape[1]*x.shape[2]) 对
x
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]] # shape (2,2,3)
我想要
[[ 1 2 3 4 5 6]
[ 7 8 9 10 11 12]] # shape (2,6)
也就是说,我想把中间维度的所有项目串联起来。
在这种特殊情况下,我可以用x.reshape(2, 2*3)
或者更抽象地说
x.reshape(x.shape[0], x.shape[1]*x.shape[2])
对于任意维x
,是否有一种紧凑的、以数字音速获得此结果的方法,最好不用自己做任何索引算法
我一直在玩
串联
函数,但没有用。如果只关心第一个维度的大小,可以使用
x.reshape(x.shape[0], -1)
-1
表示将隐式确定该维度的大小。这也适用于高维数组,前提是在新维的元组中不超过一个-1
也可以通过直接指定数组的shape
属性来执行此操作:
x.shape = (x.shape[0], -1)
使用x.restorate(…)
和直接分配给x.shape
之间的主要区别在于,如果不修改底层内存缓冲区(例如x
是非连续的),前者可能会创建一个副本,后者永远不会生成副本,而是会引发AttributeError