繁体   English   中英

将多维数组的每个子数组的最后一项放入列表

[英]Put last term of each sub-array of a multidimensional array to a list

我有一个如下所示的多维数组。 我想最后弹出所有元素并将 append 弹出到单独的列表中。

例如: -

array([[[[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [ 13,  35,  14]],        # pop this row [13 ,35, 14]

        [[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [ 13,  35,  14],
         [  9,  61,  34]],        # pop this row [9,61,34] 

        [[  0,   0,   0],
         [  0,   0,   0],
         [ 13,  35,  14],
         [  9,  61,  34],
         [ 54, 127, 105]],        # pop this row[54,127,105]

        [[  0,   0,   0],
         [ 13,  35,  14],
         [  9,  61,  34],
         [ 54, 127, 105],
         [ 92, 170, 141]],        # pop this row and similarly other rows below... 

        [[ 13,  35,  14],
         [  9,  61,  34],
         [ 54, 127, 105],
         [ 92, 170, 141],
         [ 19,  88,  73]]],


       [[[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [  2,  14,   2]],

        [[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [  2,  14,   2],
         [216, 192, 173]],

        [[  0,   0,   0],
         [  0,   0,   0],
         [  2,  14,   2],
         [216, 192, 173],
         [111,  58,  31]],

        [[  0,   0,   0],
         [  2,  14,   2],
         [216, 192, 173],
         [111,  58,  31],
         [194, 185, 180]],

        [[  2,  14,   2],
         [216, 192, 173],
         [111,  58,  31],
         [194, 185, 180],
         [  8,  32,  14]]],


       [[[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [ 27,  41,  30]],

        [[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [ 27,  41,  30],
         [209, 194, 192]],

        [[  0,   0,   0],
         [  0,   0,   0],
         [ 27,  41,  30],
         [209, 194, 192],
         [181, 156, 152]],

        [[  0,   0,   0],
         [ 27,  41,  30],
         [209, 194, 192],
         [181, 156, 152],
         [206, 188, 181]],

        [[ 27,  41,  30],
         [209, 194, 192],
         [181, 156, 152],
         [206, 188, 181],
         [  1,  38,  18]]],


       [[[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [ 42, 105,  90]],

        [[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [ 42, 105,  90],
         [ 59,  49,  46]],

        [[  0,   0,   0],
         [  0,   0,   0],
         [ 42, 105,  90],
         [ 59,  49,  46],
         [ 73,  75,  70]],

        [[  0,   0,   0],
         [ 42, 105,  90],
         [ 59,  49,  46],
         [ 73,  75,  70],
         [ 56,  51,  49]],

        [[ 42, 105,  90],
         [ 59,  49,  46],
         [ 73,  75,  70],
         [ 56,  51,  49],
         [ 49, 141, 112]]],


       [[[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [147, 149, 150]],

        [[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [147, 149, 150],
         [ 20,  22,  22]],

        [[  0,   0,   0],
         [  0,   0,   0],
         [147, 149, 150],
         [ 20,  22,  22],
         [  0,   0,   0]],

        [[  0,   0,   0],
         [147, 149, 150],
         [ 20,  22,  22],
         [  0,   0,   0],
         [  8,   5,   4]],

        [[147, 149, 150],
         [ 20,  22,  22],
         [  0,   0,   0],
         [  8,   5,   4],
         [103, 103, 101]]]])

我尝试了切片技术,但没有发生。

如果我将此数组转换为列表(名为 train)并运行代码:-

for i in range(len(train)):
    for j in range(len(train[i])):
        for k in range(len(train[i][j])):
            train_x.append(train[i][j][k][:-1])
            train_y.append(train[i][j][k][-1])

我以为它会起作用,但没有起作用。 任何人都可以检查代码或为此提供替代方法。

output 应该是:-

火车_x:-

      [[[[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0]],

        [[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [ 13,  35,  14]],         

        [[  0,   0,   0],
         [  0,   0,   0],
         [ 13,  35,  14],
         [  9,  61,  34]],        

        [[  0,   0,   0],
         [ 13,  35,  14],
         [  9,  61,  34],
         [ 54, 127, 105]],      # this continues below....

        [[ 13,  35,  14],
         [  9,  61,  34],
         [ 54, 127, 105],
         [ 92, 170, 141]]],


       [[[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0]],

        [[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [  2,  14,   2]],    # I have edited till here but it goes on like this
 
        [[  0,   0,   0],
         [  0,   0,   0],
         [  2,  14,   2],
         [216, 192, 173],
         [111,  58,  31]],

        [[  0,   0,   0],
         [  2,  14,   2],
         [216, 192, 173],
         [111,  58,  31],
         [194, 185, 180]],

        [[  2,  14,   2],
         [216, 192, 173],
         [111,  58,  31],
         [194, 185, 180],
         [  8,  32,  14]]],


       [[[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [ 27,  41,  30]],

        [[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [ 27,  41,  30],
         [209, 194, 192]],

        [[  0,   0,   0],
         [  0,   0,   0],
         [ 27,  41,  30],
         [209, 194, 192],
         [181, 156, 152]],

        [[  0,   0,   0],
         [ 27,  41,  30],
         [209, 194, 192],
         [181, 156, 152],
         [206, 188, 181]],

        [[ 27,  41,  30],
         [209, 194, 192],
         [181, 156, 152],
         [206, 188, 181],
         [  1,  38,  18]]],


       [[[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [ 42, 105,  90]],

        [[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [ 42, 105,  90],
         [ 59,  49,  46]],

        [[  0,   0,   0],
         [  0,   0,   0],
         [ 42, 105,  90],
         [ 59,  49,  46],
         [ 73,  75,  70]],

        [[  0,   0,   0],
         [ 42, 105,  90],
         [ 59,  49,  46],
         [ 73,  75,  70],
         [ 56,  51,  49]],

        [[ 42, 105,  90],
         [ 59,  49,  46],
         [ 73,  75,  70],
         [ 56,  51,  49],
         [ 49, 141, 112]]],


       [[[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [147, 149, 150]],

        [[  0,   0,   0],
         [  0,   0,   0],
         [  0,   0,   0],
         [147, 149, 150],
         [ 20,  22,  22]],

        [[  0,   0,   0],
         [  0,   0,   0],
         [147, 149, 150],
         [ 20,  22,  22],
         [  0,   0,   0]],

        [[  0,   0,   0],
         [147, 149, 150],
         [ 20,  22,  22],
         [  0,   0,   0],
         [  8,   5,   4]],

        [[147, 149, 150],
         [ 20,  22,  22],
         [  0,   0,   0],
         [  8,   5,   4],
         [103, 103, 101]]]]

train_y 应该是已移除元素的列表。

你有一个 4 维数组。
要仅获取您在评论中描述的最后“行”,您只需要迭代前 2 个维度,并且在第 3 个维度中仅获取最后一个元素(无需迭代k ,只需使用-1 ),并且根本不索引第 4 维:

for i in range(len(train)):
    for j in range(len(train)):
            train_x.append(train[i][j][:-1])
            train_y.append(train[i][j][-1])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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