我有一个如下所示的多维数组。 我想在最后弹出所有元素并将它们附加到一个单独的列表。
例如:-
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])
我认为它会起作用,但没有起作用。 任何人都可以检查代码或为此提供替代方法。
输出应该是:-
train_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])
关于python - 将多维数组的每个子数组的最后一项放入列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62899687/