簡體   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