需要在python3的多维列表中获取整个第一个元素(数组)



是否已经问过,但是我搜索了很多,找不到正确的解决方案。我是Python的新手,但我会尽量清晰。简而

array = [[[1,2,3], 5, 47, 2515],..... [[4,5,6], 3, 35, 2096]]]

我想从第一个数组元素中获取所有值,以以下形式形成一个新数组:

print(new_array)
[1,2,3,4,5,6]

在我的代码中,我试图通过此功能获得第一个值:

new_array = array[0][0]

但这仅返回第一个值:

print(new_array)
[1,2,3]

我在将数组转换为NP数组后也尝试了NP.Take:

array = np.array(array)
new_array = np.take(results,0)
print(new_array)
[1,2,3]

我尝试了许多NP函数(Concatenate,take等)尝试并在列表上迭代此功能,但要恢复以下错误(大概是因为数组的大小会更改):

ValueError: autodetected range of [[], [1445.0, 1445.0, -248.0, 638.0, -108.0, 649.0]] is not finite

感谢您的任何帮助!

您可以在不使用Numpy的情况下实现它:

from functools import reduce
l = [[[1,2,3], 5, 47, 2515], [[4,5,6], 3, 35, 2096]]
res = reduce(lambda a, b: [*a, *b], [x[0] for x in l])

输出

[1, 2, 3, 4, 5, 6]

也许值得一提的是,[*a, *b]是在Python中串联列表的一种方式,例如:

[*[1, 2, 3], *[4, 5, 6]]  # [1, 2, 3, 4, 5, 6]

您也可以使用itertools的链()函数来提取列表每个元素中第一个子阵列的提取:

from itertools import chain
result = list(chain(*[sub[0] for sub in array]))