首页 > 解决方案 > 沿每个轴将 n 维数组拆分为 2D 数组

问题描述

所以说我有一个任意维度的数组(现在,我们将给它三个维度)。

a=array([[[ 0,  1,  2,  3],
    [ 4,  5,  6,  7]],

   [[ 8,  9, 10, 11],
    [12, 13, 14, 15]],

   [[16, 17, 18, 19],
    [20, 21, 22, 23]]])

将这个数组拆分为跨所有不同轴的二维数组(在这种情况下为 n-1 但为 2)列表的最简单方法是什么,即。

new_array1=[[0, 1, 2, 3,], [4, 5, 6, 7]...[20, 21, 22, 23]]
new_array2=[[0, 4], [1, 5]...[19, 23]]
new_array3=[[0, 8, 16], [1, 9, 17]...[7, 15, 23]]

对于任意维度的数组,是否有一种简单的方法可以做到这一点?

标签: pythonarraysnumpy

解决方案


第一个:

a1 = [j for i in range(3) for j in a[i]]

第二个:

a2 = [list(zip(i[0], i[1])) for i in a]

第三个:

a3 = [list(zip(a[0][j], a[1][j], a[2][j])) for j in range(2)]

推荐阅读