很抱歉,如果已经提出此要求,但是我搜索了很多,却找不到正确的解决方案。我是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
感谢您的帮助!
答案 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]))