[英]Reshaping 2D numpy array to 4D
我有一个 2D numpy 数组X
( batch x channels
х pool_size * pool_size
),
其中第一行对应于第一批中的第一个通道,第二行 -
到第一批中的第二个通道,第三行-到第一个通道
在第二批和最后一批中-到第二批中的第二个频道:
[[ 1, 0, 0, 0],
[ 0, 2, 0, 0],
[ 0, 0, 3, 0],
[ 0, 0, 0, 4]]
是否可以将其转换为 4D 数组Y
( batch
x pool_size
x pool_size
x channels
)
没有任何循环,仅使用 numpy 方法,因此
Y[0, :, :, 0]
是
[[1, 0],
[0, 0]]
Y[0, :, :, 1]
是
[[0, 2],
[0, 0]]
Y[1, :, :, 0]
是
[[0, 0],
[3, 0]]
Y[1, :, :, 1]
是
[[0, 0],
[0, 4]]
UPD:对于输入数组
[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[ 13, 14, 15, 16]]
预期结果是:
Y[0, :, :, 0]
是
[[1, 2],
[3, 4]]
Y[0, :, :, 1]
是
[[5, 6],
[7, 8]]
Y[1, :, :, 0]
是
[[9, 10],
[11, 12]]
Y[1, :, :, 1]
是
[[13, 14],
[15, 16]]
y = y.reshape(y.shape[0],28,28,1)
您可以使用重塑,然后使用交换轴。
A = np.array([[ 1, 0, 0, 0],
[ 0, 2, 0, 0],
[ 0, 0, 3, 0],
[ 0, 0, 0, 4]])
B = A.reshape(2,2,2, 2)
这是 output:
array([[[[1, 0],
[0, 0]],
[[0, 2],
[0, 0]]],
[[[0, 0],
[3, 0]],
[[0, 0],
[0, 4]]]])
2:
array([[[[ 1, 2],
[ 3, 4]],
[[ 5, 6],
[ 7, 8]]],
[[[ 9, 10],
[11, 12]],
[[13, 14],
[15, 16]]]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.