繁体   English   中英

将 2D numpy 数组重塑为 4D

[英]Reshaping 2D numpy array to 4D

我有一个 2D numpy 数组Xbatch x channels х pool_size * pool_size ),
其中第一行对应于第一批中的第一个通道,第二行 -
到第一批中的第二个通道,第三行-到第一个通道
在第二批和最后一批中-到第二批中的第二个频道:

[[ 1, 0, 0, 0],
 [ 0, 2, 0, 0],
 [ 0, 0, 3, 0], 
 [ 0, 0, 0, 4]]

是否可以将其转换为 4D 数组Ybatch 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM