use*_*864 39 python arrays numpy reshape
考虑以下形式的数组(仅作为示例):
[[ 0 1]
[ 2 3]
[ 4 5]
[ 6 7]
[ 8 9]
[10 11]
[12 13]
[14 15]
[16 17]]
Run Code Online (Sandbox Code Playgroud)
它的形状是[9,2].现在我想转换数组,使每列成为一个形状[3,3],如下所示:
[[ 0 6 12]
[ 2 8 14]
[ 4 10 16]]
[[ 1 7 13]
[ 3 9 15]
[ 5 11 17]]
Run Code Online (Sandbox Code Playgroud)
最明显的(当然也是"非pythonic")解决方案是使用适当的维度初始化一个零数组,并运行两个for循环,其中将填充数据.我对符合语言的解决方案感兴趣...
eum*_*iro 62
a = np.arange(18).reshape(9,2)
b = a.reshape(3,3,2).swapaxes(0,2)
# a:
array([[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7],
[ 8, 9],
[10, 11],
[12, 13],
[14, 15],
[16, 17]])
# b:
array([[[ 0, 6, 12],
[ 2, 8, 14],
[ 4, 10, 16]],
[[ 1, 7, 13],
[ 3, 9, 15],
[ 5, 11, 17]]])
Run Code Online (Sandbox Code Playgroud)