我是Python的新手。我查看了其他类似的主题,但他们没有回答我想要做的事情。结果如下:
coslist[1:4]
Out[94]: [array([[ 0.7984719]]), array([[ 0.33609957]]), 0]
这就是我想要的:
coslist=[0.7984719,0.33609957,0]
我试过了:
tolist=list(coslist)
tolist[1:3]
Out[98]: [array([[ 0.7984719]]), array([[ 0.33609957]])]
而且:
y=np.array(val).ravel().tolist()
y[1:4]
Out[99]: [array([[ 0.7984719]]), array([[ 0.33609957]]), 0]
如你所见,他们中的任何一个都是我想要的。 任何帮助将不胜感激。
答案 0 :(得分:1)
有一个内置的numpy数组方法。
coslist = [numpy.array([[ 0.7984719]]), numpy.array([[ 0.33609957]]), 0]
coslist = [x.tolist()[0][0] if type(x)==numpy.ndarray else x for x in coslist]
type(coslst) # Should print <type 'list'>
lst # Should print a list of lists
答案 1 :(得分:1)
首先,您需要逐项转换列表中的np.arrays:
coslist=[np.array(item).tolist() for item in coslist]
然后我认为摆脱列表内部列表的唯一方法是通过迭代:
aux=[]
for x in coslist:
if type(x)==list:
for k in range(len(x[0])):
aux.append(x[0][k])
else:
aux.append(x)
coslist=aux
请注意,我已经考虑过每个numpy数组中可能包含多个值。因为如果你的列表只包含每个都有一个值的np.arrays,你可以这样做:
coslist=[np.array(item).tolist() for item in coslist]
coslist=[x[0][0] if type(x)==list else x for x in coslist]
或者,如果您想特别快速回答您的问题,那就可以:
coslist=[np.mean(coslist[k]) for k in range(len(coslist))]
答案 2 :(得分:0)
多维数组:
example = np.array([[1,2,3],[1,2],[1,4,5,6,7]])
使用列表理解
result = [j_i for item in a for j_i in item]
使用lambda并减少
import functools as ft
result = ft.reduce(lambda x,y :x+y, a)
使用itertools
import itertools
chain = itertools.chain(*a)
list(chain)