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

时间:2019-02-28 21:40:16

标签: python arrays numpy

很抱歉,如果已经提出此要求,但是我搜索了很多,却找不到正确的解决方案。我是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函数(连接,获取等)来尝试遍历列表,但是又返回了以下错误(大概是因为数组的大小发生了变化):

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您可以使用reduce来实现,而无需使用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]

答案 1 :(得分:0)

您还可以使用itertools的chain()函数展平列表中每个元素的第一个subArray的提取:

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