是否已经问过,但是我搜索了很多,找不到正确的解决方案。我是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]))