我想将数组列表转换为单个元素列表。
我有这个数组列表:
[array([ 1.65988671]), array([ 1.66663357]), array([ 1.53351122]), array([ 1.60234953])]
我希望有这个:
[1.6153020312169204, 1.6843892323785852, 1.662793812752394, 1.6332755497183022].
我用过:
List=[]
for i in range(arr)):
List.append(arr[i].tolist())
但我得到了这个[[ 1.65988671]), [ 1.66663357], [ 1.53351122], [ 1.60234953]]
我的代码出了什么问题?
答案 0 :(得分:1)
使用my_list.extend
而不是my_list.append
,它应该做你想要的。
答案 1 :(得分:0)
import numpy as np
arr = [
np.array([ 1.65988671]),
np.array([ 1.66663357]),
np.array([ 1.53351122]),
np.array([ 1.60234953])]
my_list = []
for x in arr:
my_list.append(x[0])
这适合我。
答案 2 :(得分:0)
您可以使用列表解析来执行此操作:
[item for arr in list_with_arrays for item in arr.tolist()]
你也可以使用hstack:
list_with_arrays = [np.array([1, 2]), np.array([2, 3]), np.array([5, 6, 7])]
np.hstack(list_with_arrays).tolist()
[1, 2, 2, 3, 5, 6, 7]
答案 3 :(得分:0)
我绝不是专家,这可能没有意义,也不是最好的方法。但它确实有效。
您正在进行此操作的方式是将每个列表附加到新列表中,从而将它们保存为列表。通过将每个项目添加到新列表(连接),它可以正常工作。
我甚至在其中一个列表中添加了一些额外的数据,以确保其有效。
start = [[ 1.65988671,1.7890], [ 1.66663357], [ 1.53351122], [ 1.60234953]]
target=[]
for i in range(len(start)):
target = target+start[i]
print (target)
答案 4 :(得分:0)
假设您使用python标准库中array
模块的array
from array import array
arr = [array('f', [ 1.65988671]), array('f', [ 1.66663357]), array('f', [ 1.53351122]), array('f', [ 1.60234953])]
lst = [ae for el in arr for ae in el]
产生
[1.6598867177963257, 1.6666336059570312, 1.5335111618041992, 1.6023495197296143]