我有x
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]] # shape (2,2,3)
I want
[[ 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
,最好不用自己做任何索引算术?
我一直在玩concatenate
功能无济于事。
如果您只关心第一维的大小,您可以使用
x.reshape(x.shape[0], -1)
The -1
意味着该维度的大小将被隐式确定。这也适用于高维数组,前提是不超过一个-1
在新维度的元组中。
您也可以通过直接分配到shape
数组的属性:
x.shape = (x.shape[0], -1)
使用之间的主要区别x.reshape(...)
并直接赋值给x.shape
是虽然前者可能会创建一个副本,如果不可能改变形状x
也无需修改底层内存缓冲区(例如,如果x
是不连续的),后者将永远不会生成副本并会引发AttributeError
反而。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)