[英]Stack every two elements of the third dimension in a numpy 3d array
我有一个形状为(294、62、350)的 numpy 数组。 沿着第三维(350),我需要将每两列组合成一个较长的列,这将产生一个形状数组(294、124、175)。 例如,如果我有这个数组:
a_3d_array = np.array([[[1, 2, 3, 6, 1, 2], [3, 4, 3, 6, 1, 4]],
[[5, 2, 2, 1, 4, 2], [2, 9, 4, 3, 2, 7]]])
预期的 output 将是:
expected_output = np.array([[[5, 2, 4], [2, 4, 2], [ 2, 1, 2], [9, 3, 7]],
[[1, 3, 1], [3, 3, 1], [2, 6, 2], [4, 6, 4]]])
抱歉,我是 python 的新手,我不知道如何解决这个问题,因此我没有“我自己的尝试”来包括这里。
a_3d_array = np.array([[[1, 2, 3, 6, 1, 2], [3, 4, 3, 6, 1, 4]],
[[5, 2, 2, 1, 4, 2], [2, 9, 4, 3, 2, 7]]])
output = np.hstack([a_3d_array[:, :, ::2], a_3d_array[:, :, 1::2]])
要组合每第 N 列:
N = 3
output = np.hstack([an_array[:, :, idx::N] for idx in range(N)])
您可以reshape
和反转第一个维度:
a_3d_array.reshape((2,4,3), order='F')[::-1]
如果你不知道形状:
x,y,z = a_3d_array.shape
a_3d_array.reshape((x,y*2,-1), order='F')[::-1]
output:
array([[[5, 2, 4],
[2, 4, 2],
[2, 1, 2],
[9, 3, 7]],
[[1, 3, 1],
[3, 3, 1],
[2, 6, 2],
[4, 6, 4]]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.